home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DS-CD ROM 2 1993 August
/
DS CD-ROM 2.Ausgabe (August 1993).iso
/
texte
/
ds0253
/
dosref.exe
/
lha
/
KAPITEL.003
< prev
next >
Wrap
Text File
|
1991-04-25
|
116KB
|
2,367 lines
** technische Referenz für Programmierer für MSDOS und den IBM PC **
─────────────────────────┤ eingetragene Anwenderversion ├───────────────────────────
nicht für den allgemeinen Vertrieb
Urheberrecht (c) 1987, 1990 Dave Williams
Deutsche Übersetzung Urheberrecht (c) 1990 Klaus Overhage
Änderungen und Erweiterungen Urheberrecht (c) 1990 Klaus Overhage
K A P I T E L D R E I
Das PC ROM BIOS
I N H A L T E
Anruf des ROM BIOS .................................................. 3**1
Interrupt 10h Videofunktionen ....................................... 3**2
Interrupt 11h Ausstattungskontrolle ................................. 3**3
Interrupt 12h Speichergröße ......................................... 3**4
Interrupt 13h Diskettenfunktionen ................................... 3**5
Interrupt 14h Initialisieren und Zugriff serieller Port ............. 3**6
FOSSIL Treiber ........................................ 3**7
Interrupt 15h Kassette I/O .......................................... 3**8
Interrupt 16h Tastatur I/O .......................................... 3**9
Interrupt 17h Drucker ............................................... 3**10
Interrupt 18h ROM BASIC ............................................. 3**11
Interrupt 19h Systemstart ........................................... 3**12
Interrupt 1Ah Datum und Zeit ........................................ 3**13
Interrupt 1Bh Control-Break ......................................... 3**14
Interrupt 1Ch Zeit-Zähler Takteinheit ............................... 3**15
Interrupt 1Dh Vektor zur Video Initialisierungsparameter ............ 3**16
Interrupt 1Eh Vektor zur Diskettenparametertabelle....... ........... 3**17
Interrupt 1Fh Ptr zu Grafikzeichen (zweiter Teil) ................... 3**18
Anruf des ROM BIOS .................................................. 3**1
Die BIOS Funktionen werden aufgerufen, indem die gewünschte Funktionsnummer in das
Register AH übertragen wird, Unterfunktion in AL, und die anderen Register mit den
erforderlichen Werten versorgt werden, und einer der ints 10h bis int 1Fh durchgeführt wird.
Sobald der Interrupt aufgerufen wird, werden alle Register und Werte der Kennzeichen
auf den Stapel abgelegt. Die Interruptadresse enthält ein Zeiger auf eine absolute Adresse
in dem Adreßbereich des ROM BIOS Chips. Dies Adresse kann einen Zeiger in die
IBMBIO.COM (oder gleichwertige) Datei oder einer Anwenderdatei enthalten.
Der Adressvektor zeigt zu einem besonderen BIOS Befehls Handler. Dieser Handler
holt sich die Registerwerte, vergleicht diese mit seiner Liste von Funktionen, und führt
die Funktion aus, falls diese zulässig ist. Sobald die Funktion ausgeführt ist, gibt diese
Werte an den Handler zurück. Der Handler sichert die Werte in den Stapel und
gibt die Steuerung an das aufrufende Programm zurück.
Die meisten Funktionen geben eine Fehlercode zurück; einige liefern jedoch noch
mehr Information. Details hierüber sind bei der Beschreibung der einzeln Funktionen
enthalten.
Registerwerte sind nur aufgeführt, wenn diese vom BIOS benutzt werden. Einige Funktion
geben wertlose Daten in ungebrauchten Registern zurück. Diese sollten nicht zum
Testen benutzt werden, da man sich hierauf nicht verlassen kann.
Drei Arten von BIOS Routinen sind verfügbar: PC BIOS, AT BIOS (auch CBIOS oder
"altes Kompatibilitäts BIOS " genannt, und das PS/2 ABIOS "erweitertes BIOS".
Das erweiterte BIOS ist in den PS/2 ROMs enthalten. Es wurde erst geplant zur OS
Benutzung, anstatt zur Anwenderbenutzung. OS/2 kann die Vorteile vom ABIOS nutzen, um
den benötigten RAM auf PS/2 Systeme zu reduzieren. Der ABIOS kann falls dies ge-
wünscht wird durch ABIOS Code auf der Festplatte oder im RAM ersetzt werden.
Es ist außerdem ein neuer BIOS Datenbereich im oberen Speicherbereich definiert,
der 1K vom RAM belegt. In OS/2 Systemen, werden Teile vom ABIOS durch OS/2 Treiber
ersetzt.
Solange das CBIOS via Zeiger adressiert werden muß, sind die Routinen im ABIOS
an absolute Adressen festgelegt. Deshalb könne diese direkt durch OS/2 an-
gesprochen werden..
Das ABIOS kann im geschützten Modus ausgeführt werden, und ist voll ablaufinvariant.
Es unterstützt drei Arten von Anforderungen - single-staged, discrete-multistaged, oder continuous-
multistaged. Ein single-staged Anforderung erledigt seine Arbeit unmittelbar und gibt die
Steuerung danach an den Aufrufer zurück. Ein discrete-multistaged Anforderung kann sich ereignen
in zwei oder mehr Stufen mit Pausen zwischen den Stufen. Der Aufrufer kann die Steuerung während
der Pausen wiedererlangen. Eine continuous-multistaged Anforderung startet einen Arbeitsgang der
nie beendet wird. (manchmal auch als Daemon bezeichnet).
Entgegen dem CBIOS welches mit Software Interrupts aufgerufen wird, erfolgt der Zugang
zum ABIOS mit FAR Calls. Aufrufe an das ABIOS sind komplett ablaufinvariant im echten und
geschützten Modus. Um eine ABIOS Funktion aufzurufen muß das aufrufende Programm einen
Zeiger zu zwei Datenstrukturen aufbauen - einen Anforderungsblock und ein allgemeinen Datenbereich. Der
Anforderungsblock spezifiziert die gewünschte Funktionsnummer und der allgemein Datenbereich ist
eine Tabelle die einen Zeiger zu allen anderen Tabellen und Datenbereichen des ABIOS enthält.
Der interne Aufbau der allgemeinen Datenbereiche enthält die Funktionsübergabe-
tabellen welche die Adressen von den BIOS Routinen haben.
ABIOS Stapel Rahmen und Anrufvereinbarungen:
Bytes Stapelinhalt
2 allgemeiner Datenbereichszeiger (Segment/Selektor ausschließlich) - verlangt
4 Zeiger Anforderungsblock - verlangt
4 Zeiger Funktionsübergabetabelle - geliefert durch das ABIOS oder dem Aufrufer
4 Zeiger Geräteblock - geliefert durch das ABIOS oder dem Aufrufer
4 Rücksprungadresse
In den ABIOS Übergabekonventionen werden ausschließlich die ersten beiden Elemente
verlangt. ABIOS versorgt die nächsten beiden. In den Betriebssystem Übergabekonventioen
übergibt diese der Aufrufer. Weil die Parameter nicht vom Stapel entfernt und an den
Aufrufer zurückgegeben werden, kann das Betriebssystem die Funktionsübergabetabellen
und Geräteadressen sichern, nachdem diese durch einen Aufruf des ABIOS versorgt wurden.
ABIOS tut nein Interrupt Schiedsspruch. Es nimmt an, das alle Interrupts durch den Aufrufer
oder dem OS gehandhabt werden und es wird ausschließlich für den Service aufgerufen. Falls
mehr als ein Gerät gemeinsam einen Hardware Interrupt benutzen muß das OS entscheiden welcher
Interrupt für das ABIOS zulässig ist.
OS/2 kann das ABIOS benutzen falls es gefunden wurde, ansonsten kopiert es die BIOS Aufrufe für
die DOS Kompatibilitätsbox indem die BIOS Aufrufe in seinen eigenen Gerätetreiber um-
geleitet werden. Dies macht es eher schwierig für DOS Treiber für Massenpeicher, hoch-
auflösende Videokarten, multitasking APIs benutzen int 15h, etc. Falls die Software
die direkt Hardwaremanipulation benötigt, sollte kontrolliert werden, ob diese unter
OS/2 abläuft. Der einfachste Methode dies zu kontrollieren, ist die DOS Version 10
oder höher abzufragen.
┌─────────────────────────────────────────────────────────────────────────────┐
│ Interrupt 10h Video Services 3**2 │
└─────────────────────────────────────────────────────────────────────────────┘
(0:0040h) die BIOS Video Services sind in Kapitel 16 beschrieben.
(Intern) Koprozessor Fehler( 80286+)
erzeugt von der CPU sobald das -ERROR Signal vom Koprozessor aktiviert wird.
(gewöhnlich 80x87, kann aber auch eine multimaster CPU oder ein alternativer NDP
wie Weitek, etc.) sein. ATs und Nachbauten verdrahten den Koprozessor gewöhnlich so
das IRQ13 benutzt wird, aber nicht alle machen es richtig.
┌─────────────────────────────────────────────────────────────────────────────┐
│ Interrupt 11h Ausstattungskontrolle 3**3 │
└─────────────────────────────────────────────────────────────────────────────┘
(0:0044h) liest den BIOS Datenbereich und gibt zwei Bytes mit den einstellten Information zurück.
Aufruf keine Parameter
Rückgabe AX Ausstattungliste. Bits sind:
0 Anzahl Diskettenlaufwerke
0 keine Laufwerke
1 startfähige (IPL) Diskettenlaufwerk installiert
1 Arithmetikprozessor
0 kein Arithmetikprozessor (80x87) vorhanden
1 Arithmetikprozessor( 80x87) vorhanden
(PS/2) 2 0 Maus nicht installiert
1 Maus installiert
(PC) 2, 3 RAM auf dem Systemboard
0, 0 16k (PC-0, PC-1)
0, 1 32k
1, 0 48k
1, 1 64k (PC-2, XT)
Anmerkung 1) nicht häufig benutzt. Alle Bits sind dann 1
2) beim AT sind die Bits immer 1
4, 5 Videomodus beim Systemstart
0, 0 kein Video installiert (benutzen mit stumm Datenstation)
0, 1 40x25 Farbe (CGA)
1, 0 80x25 Farbe (CGA, EGA, PGA, MCGA, VGA)
1, 1 80x25 Monochrom (MDA oder Herkules, viele Super-hires
Monochrom-Adapter)
6, 7 Anzahl Diskettenlaufwerke (nur wenn Bit 0 = 1 ist)
0, 0 1 Laufwerk
0, 1 2 Laufwerke
1, 0 3 Laufwerke
1, 1 4 Laufwerke
8 0 DMA vorhanden
1 kein DMA (PCjr, einige Tandy 1000s, 1400LT)
9,A,B Anzahl serieller RS232 Anschlüsse (0-3)
0, 0, 0 keine
0, 0, 1 1
0, 1, 0 2
0, 1, 1 3
1, 0, 0 4
C 0 kein Spiele I/O angeschlossen
1 Spiele I/O angeschlossen (vorgegeben für PCjr)
D installiertes serielles Zubehör
0 kein serielles Zubehör installiert
1 Convertible - internes Modem installiert
oder PCjr - serieller Drucker angeschlossen
E,F Anzahl paralleler Drucker
0, 0 keine
0, 1 einer (LPT1, PRN)
1, 0 zwei (LPT2)
1, 1 drei (LPT3)
Anmerkung Modelle bevor PS/2 erlaubten einen vierten
parallelen Drucker. Änderungen im BIOS der
PS/2s erlauben nicht die Benutzung von LPT4.
┌─────────────────────────────────────────────────────────────────────────────┐
│ Interrupt 12h Speichergröße 3**4 │
└─────────────────────────────────────────────────────────────────────────────┘
(0:0048h) feststellen Systemspeicher
Aufruf keine Parameter
Rückgabe AX Anzahl zusammenhängender 1K RAM Blöcke verfügbar für DOS
Anmerkung 1) dies ist derselbe Wert wie an der absoluten Adresse 04:13h.
2) einige ältere PC Modelle, geben den verfügbaren Speicher zurück, der
über DIP Schalter auf der Systemplatine eingestellt ist und nicht
den Speicher der physisch vorhanden ist.
3) für den PC/AT, dieser Wert gibt den funktionsfähigen Speicher an, der
beim power-on self-test gefunden wurde, ungeachtet der Speichergröße
die im CMOS RAM gespeichert ist.
4) der Wert gibt nicht irgendeinen Erweiterungsspeicher (über der 1 Mb Grenze)
zurück, der auf 80286 oder 80386 Maschinen vorhanden sein kann.
┌─────────────────────────────────────────────────────────────────────────────┐
│ Interrupt 13h Diskettenfunktionen 3**5 │
└─────────────────────────────────────────────────────────────────────────────┘
(0:0049h) der Service für die BIOS Diskettenfunktionen sind in Kapitel 8
beschrieben.
┌─────────────────────────────────────────────────────────────────────────────┐
│ Interrupt 14h Initialisieren und Zugriff serieller Port 3**6 │
└─────────────────────────────────────────────────────────────────────────────┘
(0:0050h) der folgende Status ist definiert:
Modem-Status:
Bits 0 (DELTA) Modem zum Senden bereit
1 (DELTA) Modem ist eingeschaltet
2 (DELTA) Telefon läutet
3 (DELTA) Verbindung zum Empfänger-Modem aufgebaut
4 Sendebereit
5 Endgerät betriebsbereit
6 Telefon läutet
7 Verbindung ist aufgebaut
Status der seriellen Schnittstelle:
Bits 0 Daten stehen bereit
1 Datenüberlauf
2 Paritätsfehler
3 Protokoll nicht eingehalten
4 Unterbrechung festgestellt
5 übertragen holding Register leer
6 Übertragungs-Shift-Register leer
7 Zeitüberschreitung Anmerkung: falls Bit 7 einstellen dann andere Bits sind ungültig
Alle Routinen haben in AH die Funktionsnummer und in DX die RS232 Kartennummer (Basis 0).
In AL= das zu sendene Zeichen oder das empfangene Zeichen, falls nicht anders vermerkt.
Aufruf AH 00h Initialisieren und Zugriff serieller Port
Bitmuster: BBBPPSLL
BBB= Baud-Rate: 110, 150, 300, 600, 1200, 2400, 4800, 9600
PP= Parität: 01= ungerade, 11= gerade
S= Stop-Bits: 0= 1, 1= 2
LL= Datenlänge: 10= 7-bits, 11= 8-bits
AL Konfigurationsparamter
Bitmuster:
0 Datenlänge
1 Datenlänge
2 Stop-Bits
3 Parität
4 Parität
5 Baud-Rate
6 Baud-Rate
7 Baud-Rate
Datenlänge 10 7 Bits
11 8 Bits
Stop-Bits 0 1 Stop-Bit
1 2 Stop-Bits
Parität 00 keine
01 ungerade
11 gerade
Baud-Rate 000 110 Baud
001 150 Baud
010 300 Baud
011 600 Baud
100 1200 Baud
101 2400 Baud
110 4800 Baud
111 9600 Baud( 4800 auf PCjr)
DX Portnummer (0= COM1, 1= COM2, etc.)
Rückgabe AH Status der seriellen Schnittstelle
AL Modem-Status
Anmerkung Um den seriellen Port auf PS/2 Maschinen mit mehr als 9600 Baud zu
initialisieren, siehe fns 04h und 05h.
Funktion 01h Zeichen in AL zum Comm Port ausgeben
Aufruf AH 01h
AL Zeichen
DX Portnummer (0 - 3)
Rückgabe AH Status RS232
Bit 0 Daten stehen bereit
1 Datenüberlauf
2 Paritätsfehler
3 Protokoll nicht eingehalten
4 Unterbrechung erkannt
5 Übertragungs-Hold-Register leer
6 Übertragungs-Shift-Register leer
7 Zeitüberschreitung
AL Modem-Status
Bit 0 (DELTA) Modem zum Senden bereit
1 (DELTA) Modem ist angeschaltet
2 (DELTA) Telefon läutet
3 (DELTA), Verbindung zum Empfänger-Modem aufgebaut
4 Modem zum Senden bereit
5 Modem ist angeschaltet
6 Telefon läutet
7 Verbindung zum Empfänger-Modem aufgebaut
Funktion 02h Zeichen vom Comm Port DX einlesen
Aufruf AH 02h
DX Portnummer (0-3)
Rückgabe AL empfangenes Zeichen
AH Fehlercode (siehe Funktion 01h) (00h für kein Fehler)
Funktion 03h Status vom Comm Port DX (0 oder 1) erfragen
Aufruf AH 03h
DX Port (0-3)
Rückgabe AH Status der seriellen Schnittstelle
Bit 7 Zeitüberschreitung
Bit 6 Übertragungs-Shift-Register leer
Bit 5 Übertragungs-Hold-Register leer
Bit 4 Unterbrechung erkannt ("long-space")
Bit 3 Protokoll nicht eingehalten
Bit 2 Paritätsfehler
Bit 1 Datenüberlauf
Bit 0 Daten stehen bereit
AL Modem-Status
Bit 7 Verbindung zum Empfänger-Modem aufgebaut
Bit 6 Telefon läutet
Bit 5 Endgerät betriebsbereit
Bit 4 Sendebereit
Bit 3 (DELTA) Verbindung zum Empfänger-Modem aufgebaut
Bit 2 (DELTA) Telefon läutet
Bit 1 (DELTA) Modem ist eingeschaltet
Bit 0 (DELTA) Modem zum Senden bereit
Funktion 04h erweitertes Initialisieren (Convertible, PS/2)
Aufruf AH 04h
AL abschalten Zustand
01h falls abschalten
00h wenn kein abschalten
BH Parität
00h keine Parität
01h ungerade Parität
02h gerade Parität
03h Steuerknüppel Parität ungerade
04h Steuerknüppel Parität gerade
BL Anzahl Stop-Bits
00h 1 Stop-Bit
01h 2 Stop-Bits (1½ falls 5 Bit Datenlänge)
CH Datenlänge
00h 5 Bits
01h 6 Bits
02h 7 Bits
03h 8 Bits
CL Baud-Rate
00h 110
01h 150
02h 300
03h 600
04h 1200
05h 2400
06h 4800
07h 9600
08h 19200
DX comm Port (0-3)
Rückgabe AH Status der seriellen Schnittstelle
AL Modem-Status
Anmerkung liefert ein mehrfaches der fn 00h Möglichkeiten für PS/2 Maschinen.
Funktion 05h erweitert Kommunikation Port steuern( Convertible, PS/2)
Aufruf AH 05h
AL 00h lese Modem Steuerungsregister
01h schreibe Modem Steuerungsregister
BL Modem Steuerungsregister
Bits 0 DTR Endgerät bereit
1 RTS Sender einschalten
2 out1
3 out2
4 loop
5, 6, 7 reserviert
DX Portnummer (0= COM1, 1= COM2, etc.)
Rückgabe AH Status der seriellen Schnittstelle (siehe fn 00h)
AL Modem-Status (siehe fn 00h)
BL Modem Steuerungsregister (siehe fn 01h)
FOSSIL Treiber ........................................................ 3**7
Interrupt 14h FOSSIL (Fido/Opus/Seadog Standard Interface Level) Treiber
Ein FOSSIL ist ein Gerätetreiber zur Behandlung der IBM PC seriellen
Schnittstellen in einem Standardmodus von einem Anwendungs
(Kommunikations) Programm. Ein FOSSIL wird mit dem int 14h BIOS
Kommunikationsvektor verkettet und ersetzt viele Funktionen mit erweiterten
Routinen, auf die leicht durch eine Anwendung zugegriffen werden kann.
Für alle Funktionen: alle Register die keinen Rückgabewert enthalten,
bleiben durch den Aufruf erhalten.
Aufruf AH 00h einstellen Baud-Rate und Parameter
AL Byte
Bits 7,6,5 Baud-Rate
000 19200 Baud
001 38400 Baud
010 300 Baud
011 600 Baud
100 1200 Baud
101 2400 Baud
110 4800 Baud
111 9600 Baud
Bits 4,3 Parität
00 keine
01 ungerade
10 keine
11 gerade
Bit 2 Stop-Bits
0 1 Stop-Bit
1 2 Stop-Bits
Bit 1 Datenlänge
0 5 Bits plus Wert
andere wahlweise
DX Portnummer (NOP falls DX= 00FFh)
Rückgabe AX Status (siehe fn 03h)
Anmerkung die niederwertigen 5 Bits sind bei FOSSIL 1.0 nicht definiert.
Aufruf AH 01h Zeichen übertragen mit Warten
AL ASCII Wert des Zeichen das gesendet werden soll
DX Portnummer (NOP falls DX= 00FFh)
Rückgabe AX Status (siehe Funktion 03h)
Anmerkung 1) Zeichen wird zur Übertragung gepuffert. Falls im Sendepuffer Platz ist,
wird das Zeichen in den Puffer übertragen und die Steuerung an den
Aufrufer zurückgegeben. Falls der Puffer voll ist, wartet der Treiber
solange bis Platz da ist. Dies Funktion sollte mit Vorsicht benutzt
werden, sobald die Überlaufkontrolle eingeschaltet ist.
Aufruf AH 02h FOSSIL: ein Zeichen empfangen mit Warten
DX Portnummer (0-3)(NOP falls DX= 00FFh)
Rückgabe AH RS-232 Status (siehe Funktion 00h)
AL ASCII Wert des empfangenen Zeichens vom seriellen Port
Anmerkung Ergibt Zeitüberschreitung falls DSR nicht besteht, selbst wenn
Funktion 03h zurückgibt das Daten bereit stehen.
Aufruf AH 03h FOSSIL: Status anfordern
DX Portnummer (NOP falls DX= 00FFh)
Rückgabe AX Status
AH Bit 0 gesetzt RDA Eingabedaten sind im Puffer verfügbar
1 gesetzt OVRN Überlauf Eingabepuffer
2 nicht benutzt
3 nicht benutzt
4 nicht benutzt
5 gesetzt THRE Platz ist verfügbar im Ausgabepuffer
6 gesetzt TSRE Ausgabepuffer ist leer
7 nicht benutzt
AL Bit 0 nicht benutzt
1 nicht benutzt
2 nicht benutzt
3 gesetzt, dieses Bit ist immer gesetzt
4 nicht benutzt
5 nicht benutzt
6 nicht benutzt
7 gesetzt DCD Übertragung festgestellt
Anmerkung Bit 3 von AL ist immer gesetzt, damit Programme es als carrier detect bit
bei festverdrahteten (Null Modem) Verbindungen benutzen können.
Aufruf AH 04h Initialisieren FOSSIL Treiber
BX 4F50h (wahlweise)
DX Portnummer (DX= 00FFh spezial)
ES:CX Zeiger zur ^C Adresse (wahlweise)
Rückgabe AX 1954h falls erfolgreich
BL maximum Funktion Nummer unterstützt (ausschließend 7Eh-0BFh)
BH Revision von FOSSIL unterstützt
Anmerkung 1) DTR wird errichtet sobald FOSSIL initialisiert ist.
2) existierende Baud-Rate bleibt erhalten.
3) falls BX 4F50h enthält, spezifiziert die Adresse in ES:CX das ^C
Kennzeichenbyte im Anwenderprogramm, welches erhöht wird sobald ^C
durch die Tastaturroutinen erkannt wird. Dies ist wahlweise und wird
ausschließlich auf Maschinen benötigt, wo die Tastaturroutinen kein
int 1Bh oder int 23h durchführen können oder wollen, sobald ein control-C
eingegeben wurde.
Aufruf AH 05h Deinitialisiere FOSSIL Treiber
DX Portnummer (DX= 00FFh besonders)
Rückgabe keine
Anmerkung 1) DTR wird nicht beeinflusst.
2) Befreit Treiber von comm Port. Sollte ausgeführt werden, sobald
die Transaktionen am Port beendet sind.
3) falls DX= 00FFh, die Initialisierung die mit der FOSSIL Funktion
04h und DX= 00FFh durchgeführt wurde, ist unerledigt.
Aufruf AH 06h FOSSIL: erhöhen/verringern DTR
AL DTR gesetzter Status
00h verringerte DTR
01h erhöhte DTR
DX comm Port (NOP falls DX= 00FFh)
Rückgabe keine
Aufruf AH 07h FOSSIL: Feststellen Zeit-Zähler Takteinheit Parameter
Rückgabe AH Takteinheiten pro Sekunde auf Interruptnummer in AL
AL Zeit-Zähler Takteinheit Interrupt Nummer (nicht Vektor!)
DX Millisekunden pro Takteinheit( annähern)
Aufruf AH 08h FOSSIL: Ausgabepuffer leeren
DX Portnummer (NOP falls DX= 00FFh)
Rückgabe keine
Anmerkung wartet bis alle Ausgaben erledigt sind.
Aufruf AH 09h FOSSIL: Ausgabepuffer löschen
DX Portnummer (NOP falls DX= 00FFh)
Rückgabe keine
Anmerkung wird unmittelbar an den Aufrufer zurückgegeben.
Aufruf AH 0Ah FOSSIL: Eingabepuffer löschen
DX Portnummer (NOP falls DX= 00FFh)
Rückgabe keine
Anmerkung 1) falls irgendein Hindernis auftritt (fallendes RTS oder gesendetes
XOFF) wird der Port "freigegeben", indem ein RTS erstellt wird oder
XON gesendet wird.
2) wird unmittelbar an den Aufrufer zurückgegeben.
Aufruf AH 0Bh FOSSIL: Übertragen ohne Warten
AL ASCII Wert des Zeichen das gesendet werden soll
DX Portnummer (NOP falls DX= 00FFh)
Rückgabe AX 0000h Zeichen wurde nicht akzeptiert
0001h Zeichen wurde akzeptiert
Anmerkung dies ist genau dasselbe wie das "reguläre" Übertragen, mit der Einschränkung,
das wenn kein Platz im Ausgabepuffer ist der Wert 0 im Register AX
zurückgegeben wird und andernfalls eine 1.
Aufruf AH 0Ch FOSSIL: Nondestructive lesen nicht Warten
DX Portnummer (NOP falls DX= 00FFh)
Rückgabe AH Zeichen
0FFFFh Zeichen nicht verfügbar
Anmerkung 1) liest async Puffer.
2) entfernt den Tastaturcode nicht vom Puffer.
Aufruf AH 0Dh FOSSIL: Tastatur lesen, nicht warten
Rückgabe AX IBM Tastaturauswahlcode oder
0FFFFh wenn kein Zeichen verfügbar ist
Anmerkung 1) benutzt IBM-style Funktionstastenabbildung im höherwertigen Byte.
2) Scancodes für NICHT-Funktionstasten werden nicht benötigt, sind aber
mit enthalten.
3) entfernt den Tastaturcode nicht vom Puffer.
Aufruf AH 0Eh FOSSIL: Tastatur Eingabe mit warten
Rückgabe AX IBM Tastaturauswahlcode
Anmerkung gibt das nächstes Zeichen von der Tastatur zurück oder wartet wenn
kein Zeichen verfügbar ist.
Aufruf AH 0Fh aktivieren oder deaktivieren Flußsteuerung
AL Bitmuster beschreibt die angeforderte Flußsteuerung
Bits 0 XON/XOFF auf übertragen (überwachen XOFF solange gesendet wird)
1 CTS/RTS (CTS auf übertragen/RTS auf empfangen)
2 reserviert
3 XON/XOFF auf empfangen (senden XOFF sobald Puffer fast voll ist)
4-7 nicht benutzt, FOSSIL spezielle Aufrufe zur Einstellung von 1
DX Portnummer (NOP falls DX= 00FFh)
Rückgabe keine
Anmerkung 1) Bit 2 ist reserviert für DSR/DTR, wird zur Zeit aber von keiner
Ausführung unterstützt .
2) Übertragungsflußsteuerung erlaubt dem anderen Ende den Sender zurückzuhalten
sobald es einen Überlauf bekommt. Die Empfangsflußsteuerung teilt dem FOSSIL
mit, falls dieser bewältigt wurde, um die Übertragung erneut zu versuchen.
3) wenn übertragen XON/XOFF eingeschaltet ist, hält der FOSSIL die Übertragung an
sobald ein XOFF empfangen wurde. Der FOSSIL nimmt die Übertragung wiederauf
sobald ein XON empfangen wurde.
4) eingeschaltetes CTS/RTS ermöglicht dem FOSSIL mit dem Übertragen aufzuhören,
sobald CTS gelöscht ist. Die Übertragung wird wiederaufgenommen, sobald CTS
gesetzt ist. Der FOSSIL hebt RTS auf, sobald der Empfangspuffer zu einem vorher
bestimmten Prozentsatz voll ist. Der FOSSIL setzt RTS wieder, sobald der Empfangspuffer
unter einem vorher bestimmten Prozentsatz geleert ist. Der Punkt an dem dies auftritt
bleibt dem jeweiligen FOSSIL Ausführer überlassen.
5) einschalten empfangen XON/XOFF ermöglicht dem FOSSIL ein XOFF zu senden,
sobald der Empfangspuffer zu einem vorher definierten Prozentsatz voll
ist. Eine XON wird gesendet, sobald der Empfangspuffer unter einem vorher
bestimmten Prozentsatz geleert ist. Der Punkt an dem dies auftritt
bleibt dem jeweiligen FOSSIL Ausführer überlassen.
6) Anwendungen die diese Funktion benutzen, sollten alle Bits auf ON setzen, auch
die im Halbbyte von AL. Da ist eine kompatible (aber nicht identische) FOSSIL
Treiber Ausführung die das obere Halbbyte zur Steuerung benutzt. Falls eine Anwendung
alle Bits im oberen Halbbyte auf 1 gesetzt hat, sollte diese immerlaufen
ungeachtet der Methode die von dem gegebenen Treiber benutzt wird.
Aufruf AH 10h erweiterte Ctrl-C/Ctrl-K Kontrolle und Übertragung An/Aus
AL Kennzeichen Bitmaskenbyte (Bit ist gesetzt falls aktiv)
Bits 0 aktivieren/deaktivieren Ctrl-C/Ctrl-K Kontrolle
1 deaktivieren/aktivieren des Senders
2-7 nicht benutzt
DX Portnummer (NOP falls DX= 00FFh)
Rückgabe AX Statusbyte
0000h control-C/K wurde nicht empfangen
0001h control-C/K wurde empfangen
Anmerkung dies wird primär von Programmen benutzt, die kein Vertrauen an das XON/XOFF auf FOSSIL
Ebene haben (ähnlich wie BBS Software).
Aufruf AH 11h FOSSIL: einstellen aktuelle Cursorposition.
DH Zeile( Zeile) 0-24
DL Spalte 0-79
Rückgabe keine
Anmerkung 1) diese Funktion ist dasselbe wie der int 10h, fn 02h auf dem IBM PC.
Die Cursorposition wird in DX übergeben: Zeile in DH und Spalte in DL. Diese
Funktion behandelt den Bildschirm wie ein Koordinatensystem dessen Ursprung (0,0)
die obere linke Ecke von dem Bildschirm ist.
2) Zeile und Spalte beginnt bei 0.
Aufruf AH 12h FOSSIL: lesen aktuelle Cursorposition.
Rücklauf DH Zeile
DL Spalte
Anmerkung 1) Dasselbe wie int 10h/fn 03h in dem IBM PC BIOS. Die aktuelle
Cursorposition (dasselbe Koordinatensystem wie Funktion 16h)
wird in DX zurückgegeben.
2) Zeile und Spalte beginnt bei 0.
Aufruf AH 13h FOSSIL: einzelnes ANSI Zeichen am Bildschirm anzeigen.
AL Wert des Zeichen das angezeigt werden soll
Rückgabe keine
Anmerkung dieser Aufruf ist ablaufinvariant, da die ANSI Abarbeitung über DOS
durchgeführt wird.
Aufruf AH 14h FOSSIL: aktivieren oder deaktivieren Watchdog Abarbeitung
AL 00h deaktivieren Watchdog
01h aktivieren Watchdog
DX Portnummer (NOP falls DX= 00FFh)
Rückgabe keine
Anmerkung 1) dieser Aufruf ist die Ursache die den FOSSIL zum Neustart das System
veranlasst, falls das Carrier detect Signal für den spezifizierten
Port abfällt solange der Watchdog aktiviert ist.
2) der Port braucht nicht aktiv sein, damit diese Funktion arbeitet.
Aufruf AH 15h zeige Zeichen am Bildschirm an, benutze dabei BIOS Routinen
AL ASCII Wert des Zeichen das angezeigt werden soll
Rückgabe keine
Anmerkung 1) diese Funktion ist ablaufinvariant.
2) ANSI Abarbeitung wird nicht vorausgesetzt.
Aufruf AH 16h einfügen oder löschen einer Funktion in der Takteinheitenkette
AL 00h löschen einer Funktion
01h hinzufügen einer Funktion
ES:DX Adresse der Funktion
Rückgabe AX 0000h erfolgreich
0FFFFh erfolglos
Aufruf AH 17h FOSSIL: Neustart System
AL Startart
00h Kaltstart
01h Warmstart
Rückgabe keine
Aufruf AH 18h FOSSIL: lesen Block
CX maximale Anzahl der Zeichen die übertragen werden
DX Portnummer (NOP falls DX= 00FFh)
ES:DI Zeiger zum Anwenderpuffer
Rückgabe AX Anzahl der Zeichen die übertragen wurden
Anmerkung 1) dies Funktion wartet nicht auf mehr Zeichen falls der Wert in CX die
Anzahl der vorhandenen überschreitet.
2) ES:DI wird durch den Aufruf nicht verändert; der Anzahl der Bytes die
übertragen wurden, wird in AX zurückgegeben.
Aufruf AH 19h FOSSIL: schreiben Block
CX maximale Anzahl der Zeichen die übertragen werden
DX Portnummer (NOP falls DX= 00FFh)
ES:DI Zeiger zum Anwenderpuffer
Rückgabe AX Anzahl der Zeichen die übertragen wurden
Anmerkung ES und DI wird nicht verändert
Aufruf AH 1Ah FOSSIL: Break Signal senden, Start oder Ende
AL 00h senden 'break' beenden
01h senden 'break' starten
DX Portnummer (NOP falls DX= 00FFh)
Rückgabe keine
Anmerkung 1) Zurücksetzen aller Hindernisse zur Übertragungsflußsteuerung, wie XOFF
empfangen.
2) Initialisieren (fn 04h) oder Deinitialisieren (fn 05h) beendet einen aktiven break.
3) die Anwendung die "Länge" vom break bestimmen.
Aufruf AH 1Bh FOSSIL: rücklauf Information über der Treiber
CX Größe des Anwenderpuffers in Bytes
DX Portnummer (falls DX= 00FFh, Port Daten sind nicht zulässig)
ES:DI Zeiger zum Anwenderpuffer
Rückgabe AX Anzahl Zeichen übertragen
ES:DI Anwenderpuffer Aufbau:
00h Wort Größe des Aufbaus in Bytes
02h Byte FOSSIL Treiber Version
03h Byte Revisionsebene von diesem Treiber
04h dwort FAR Zeiger zur ASCII ID Zeichenkette
08h Wort Größe des Eingabepuffers in Bytes
0Ah Wort Anzahl Bytes im Eingabepuffer
0Ch Wort Größe des Ausgabepuffers in Bytes
0Eh Wort Anzahl Bytes im Ausgabepuffer
10h Byte Bildschirmbreite in Zeichen
11h Byte Bildschirmhöhe in Zeichen
12h Byte aktuelle Baud-Rate, Computer zu Modem
(siehe Maske in Funktion 00h
Anmerkung 1) das Baud-Rate Byte enthält die Bits die fn 00h benutzt um den Port
auf die Geschwindigkeit einzustellen.
2) die Felder die für einen einzelnen Port benutzt werden (Puffergröße, Platz im
Puffer, Baud-Rate) sind undefiniert falls Port= 0FFh oder eine ungültiger
Port in DX enthalten ist.
3) zusätzlich Information werden immer an diesen angefügt, deshalb ändern
sich diese Felder mit FOSSIL Revisionänderungen nicht.
Aufruf AH 7Eh FOSSIL: installieren einer externen Anwendung
AL zugewiesener Code zur externen Anwendung
ES:DX Zeiger zum Einsprungspunkt
Rückgabe AX 1954h FOSSIL Treiber ist vorhanden
nicht 1954h FOSSIL Treiber ist nicht vorhanden
BH 00h scheiterte
01h erfolgreich
BL zugewiesener Code zur Anwendung (derselbe wie AL beim Aufruf)
Anmerkung 1) Anwendungcodes 80h-0BFh sind unterstützt. Codes 80h-83h sind reserviert.
2) eine Fehlercode von BH= 00h und AX= 1954h bedeutet, daß eine andere externe
Anwendung schon mit dem Code in AL installiert wurde.
3) Anwendungen werden mit einem FAR Call aufgerufen und müssen einen
FAR Return durchführen.
Aufruf AH 7Fh FOSSIL: entfernen einer externen Anwendung
AL zugewiesener Code zur externen Anwendung
ES:DX Zeiger zum Einsprungspunkt
Rückgabe AX 1954h
BH 00h scheiterte
01h erfolgreich
BL zugewiesener Code zur Anwendung (derselbe wie AL beim Aufruf)
┌─────────────────────────────────────────────────────────────────────────────┐
│ Interrupt 15h Kassette I/O 3**8 │
└─────────────────────────────────────────────────────────────────────────────┘
(0:0054h) 1) umbenannt in "System Services" beim PS/2 Entwurf.
2) ausführen eines int 15h auf einem XT kann Ursache für ein Systemabsturz sein.
Beim AT und später, Interrupts werden mit CLI ausgeschaltet sobald die
Interrupt Service Routine aufgerufen wird, aber die meisten ROM
Versionen schalten die Interrupts mit STI nicht wieder an.
3) Für den original IBM PC, int 15h gibt in AH= 80h zurück und CF ist gesetzt
bei allen Aufrufen außer AH mit 0, 1, oder 2.
4) Für den PC/XT, int 15h gibt in AH= 86h zurück, CF ist gesetzt falls
der Interrupt aufgerufen wird. (Das PC/XT ROM BIOS unterstützt den int 15h nicht)
5) Für den AT/339, int 15h gibt in AH= 86h zurück, CF ist gesetzt falls
der Aufruf mit einem ungültigen Funktionscode erfolgte.
Funktion 00h anschalten Kassettenmotor (PC, PCjr ausschließlich)
Aufruf AH 00h
Rückgabe CF gesetzt wenn Fehler
AH Fehlercode
00h keine Fehler
01h CRC Fehler
02h schlechte Bandsignale
keine Datenübergänge (PCjr)
03h keine Daten auf dem Band gefunden
nicht benutzt (PCjr)
04h keine Daten
kein Vorspann (PCjr)
80h ungültiger Befehl
86h keine Kassette vorhanden
nicht zulässig in PCjr
Anmerkung NOP für Systeme wo die Kassette nicht unterstützt wird.
Funktion 01h ausschalten Kassettenmotor (PC, PCjr ausschließlich)
Aufruf AH 01h
Rückgabe CF gesetzt wenn Fehler
AH Fehlercode( 86h)
Anmerkung NOP für Systeme wo die Kassette nicht unterstützt wird.
Funktion 02h lesen Blöcke von Kassette (PC, PCjr ausschließlich)
Aufruf AH 02h
CX Anzahl zu lesender Bytes
ES:BX Segment:Offset + 1 vom letzten gelesenen Byte
Rückgabe CF gesetzt wenn Fehler
AH Fehlercode( 01h, 02h, 04h, 80h, 86h)
DX Anzahl der Bytes die gelesen wurden
ES:BX Zeiger auf das letzte geschriebene Byte
Anmerkung 1) NOP für Systeme wo die Kassette nicht unterstützt wird.
2) Kassettentransaktionen lesen normalerweise 256 Byte große Blöcke.
Funktion 03h schreibe Datenblöcke auf Kassette (PC, PCjr ausschließlich)
Aufruf AH 03h
CX Anzahl zu schreibender Bytes
ES:BX Zeiger zum Datenpuffer
Rückgabe CF gesetzt wenn Fehler
AH Fehlercode( 80h, 86h)
CX 00h
ES:BX Zeiger zum letzten geschriebenen Byte +1
Anmerkung 1) NOP für Systeme wo die Kassette nicht unterstützt wird.
2) der letzte Blocken wird auf 256 Bytes mit Nullen aufgefüllt, falls benötigt.
3) es werden bei diesem Service keine Fehler zurückgegeben
Funktion 0Fh ESDI formatieren Einheit periodisch Interrupt( PS/2 50+)
Aufruf AH 0Fh
AL Phasencode
00h reserviert
01h Oberflächenanalyse
02h Formatierung
Rückgabe CF gelöscht falls Formatierung fortsetzt werden soll
gesetzt falls es beendet werden sollt
Anmerkung 1) ruft das BIOS auf dem ESDI Festplattenlaufwerksadapter auf/dies erfolgt während
der Formatierung oder der Oberflächenanalyse nachdem ein Zylinder vervollständigt ist.
2) dieser Funktionsaufruf kann durch ein Programm belegt sein, sodaß es erkennen kann,
wie jede Zylinder formatiert oder analysiert ist. Das Programm kann
die Interrupts für jede Phase zählen um den aktuellen Zylinder festzustellen.
3) der vorgegebene BIOS Handler gibt ein gesetztes CF für diese Funktion zurück.
Funktion 10h TopView API Funktionsaufrufe (TopView)
siehe Kapitel 17
Funktion 20h PRINT.COM (DOS 3.1+ intern) (AT, XT/286, PS/2 50+)
Aufruf AH 20h
AL Unterfunktion
00h ausschalten kritisches Bereichskennzeichen
01h einstellen kritisches Bereichskennzeichen
ES:BX Zeiger zum Kennzeichenbyte gesetzt solange DOS Aufrufe aktiv sind
10h einstellen SysReq Routine
11h Abschluß der SysReq Routine (ausschließlich Software)
Funktion 21h Lesen Power-On Selbsttest (POST) Fehleraufzeichnung (PS/2 50+)
Aufruf AH 21h
AL 00h Lesen POST Aufzeichnungen
01h Schreiben POST Aufzeichnungen
BH Gerät ID
BL Gerät Fehlercode
Rückgabe CF gesetzt wenn Fehler
AH Zustand
00h erfolgreich gelesen
BX Anzahl POST Fehlercodes gespeichert
ES:DI Zeiger zur Fehleraufzeichnung
01h Liste voll
80h ungültiger Befehl
86h Funktion wird nicht unterstützt
Anmerkung die Aufzeichnung ist ein Reihe von Wörtern, das erste Byte identifiziert den
Fehlercode und das zweite ist das Gerät ID.
Funktion 40h Lesen/modifizieren Profile (Convertible)
Aufruf AH 40h
AL 00h lesen System Profile in CX, BX
01h schreiben System Profile von CX, BX
02h lesen internes Modem Profile in BX
03h schreiben internes Modem Profile von BX
BX profile Information
Rückgabe BX internes Modem Profile (von 02h)
CX, BX System Profile (von 00h)
Funktion 41h warten auf ein externes Ereignis (Convertible)
Aufruf AH 41h
AL Bedingungstyp
Bits 0-2 Bedingung zum Warten auf
0, 0, 0 irgendein externes Ereignis
0, 0, 1 vergleichen und Rücksprung falls gleich
0, 1, 0 vergleichen und Rücksprung falls nicht gleich
0, 1, 1 testen und Rücksprung falls nicht Null
1, 0, 0 testen und Rücksprung falls Null
3 reserviert
4 0 Anwender Byte
1 Portadresse
5-7 reserviert
BH Bedingungsvergleich oder Maskenwert
Bedingungcodes:
00h irgendein externes Ereignis
01h vergleichen und Rücksprung falls gleich
02h vergleichen und Rücksprung falls nicht gleich
03h test und Rücksprung falls nicht Null
04h test und Rücksprung falls Null
BL Zeitüberschreitung Wert in 55 Millisekunden Einheiten
00h wenn keine Zeitbegrenzung
DX I/O Portadresse (falls AL Bit 4= 1)
ES:DI Zeiger zum Anwender Byte (falls AL Bit 4= 0)
Funktion 42h Anforderung Systemabschaltung (Convertible)
Aufruf AH 42h
AL 00h benutze System Profile
01h Unterbrechnung erzwingen ungeachtet vom Profile
Rückgabe Unbekannt
Funktion 43h lesen Systemstatus (Convertible)
Aufruf AH 43h
Rückgabe AL Statusbyte
Bit 0 LCD nicht angeschlossen
1 reserviert
2 RS232/parallel angeschaltet
3 internes Modem angeschaltet
4 Netz ativiert beim Alarm
5 ungültige Uhrzeit
6 externes Netzteil in Benutzung
7 Batteriespannung niedrig
Funktion 44h (De)aktivieren Energie für internes Modem (Convertible)
Aufruf AH 44h
AL 00h Energie auschalten
01h Energie anchalten
Rückgabe Unbekannte
Funktion 4Fh OS Hook - Tastatur abstellen (außer PC, PCjr, und XT)
Aufruf AH 4Fh
AL Auswahlcode, CF gesetzt
Rückgabe AL Auswahlcode
CF gesetzt Abarbeitung gewünscht
gelöscht Auswahlcode wird nicht benötigt
Anmerkung 1) aufgerufen vom int 9 Handler für jeden Tastenanschlag zum übersetzen der Auswahlcodes.
2) ein OS oder ein TSR kann diese Funktion benutzen, um die unbearbeiteten Tastatureingaben
zu filrtern. Der neue Handler kann den Auswahlcode ersetzen, denselben Auswahlcode
zurückgeben, oder das CF setzen um die Eingabe zu verwerfen.
Der vorgegebene BIOS Routine gibt einfach den unveränderten
Auswahlcode zurück.
3) ein Programm kann den int 15h/fn0C0h aufrufen, um festzustellen ob das
das BIOS auf dem Hauptrechner die Tastaturabschaltung unterstützt.
4) intern benutzt von PC-MOS/386 v4.00+ zur Tastatureingabe.
Funktion 52h MicroSoft RAM-Residente Software Spezifikationen 1.0
dieser Standard wurde 1986 von MicroSoft vorgeschlagen, als eine allgemein
gültige Schnittstelle für TSR Programme. Es scheint weitgehend unbekannt
zu sein oder wird einfach mißachtet.
Funktion 0: holen Programminformation durch den Namen
Aufruf DS:BX das Programm ID von dem memory-residenten Programm das gesucht wird
Rückgabe AL 0FFh falls das Programm installiert ist
00h falls es nicht installiert ist
CX die Nummer des Programms. Der erste Programm wird installiert mit der
Nummer 0, das zweite Programm mit der Nummer 1, usw. Bei Benutzen
eines dynamischen numerierenden Systems, vermeiden wir Konflikte
zwischen Programme die dasselbe ID wählen. Auch ist dies ein guter Weg
um alle speicherresistente Programme mit der Funktion 1 zu untersuchen .
ES:DX Zeiger zu der Programm ID Aufzeichnung (PIDR)
Anmerkung dies Funktion testet ob ein Programm speicherresistent ist und gibt einen Zeiger
zu dessen Programminformation zurück, falls es speicherresistent ist. Um diese Funktion
zu benutzen, DS:BX auf das Programm ID zeigen. Jede installierte Programm
überprüft das Programm ID mit seinem eigenen internen Programm ID.
Funktion 1: holen Programminformation durch die Nummer
Aufruf CX Programmnummer für welches wir die Information benötigen
Rückgabe AL 0FFh falls das Programm installiert ist
00h falls es nicht installiert ist
ES:DX Zeiger zu der Programm ID Aufzeichnung (PIDR)
Anmerkung diese Funktion gibt genau dieselben Information wie Funktion 0 zurück. Die
einzige Differenz ist, wie das benötigte Programm identifiziert wird, welches
durch seine Position in der Interruptkette bestimmt wird; Programm 0 ist das
letzte Programm in der Kette, und das erste Programm in der Kette (normalerweise
das letzte installierte Programm) hat die höchste Nummer.
Funktion 2: aktivieren Programm
Aufruf CX Nummer des Programms welches aktiviert werden soll
DS:BX Aktivierungaufzeichnung. Dies Aufzeichnung übergibt dem Programm Information
wie und was in dem Programm aktiviert werden soll.
Rückgabe keine
Anmerkung dies Funktion aktiviert eins von den installierten Programmen. Es ist nützlich
falls viele Schreibtisch Anwendungen über ein Bedienungsfeld gesteuert werden
sollen, ähnlich dem was in SideKick benutzt wird. Es kann auch dazu benutzt werden,
um Programm wie ProKey einen benannten Makro unter Programmsteuerung ausführen zulassen,
oder mit SideKick eine von den Schreibtischanwendungen von einem
Programm oder einer Stapeldatei aufzurufen.
Funktion 3: Programm deaktivieren
Aufruf CX Nummer des Programms welches deaktiviert werden soll
DS:BX Deaktivierungsaufzeichnung. Dies Aufzeichnung übergibt dem Programm Information
wie und was in dem Programm deaktiviert werden soll.
Rückgabe keine
Anmerkung diese Funktion ist das Gegenteil von Funktion 2 (aktivieren Programm).
Funktion 4: Programm einschalten
Aufruf CX Nummer des Programms welches eingeschaltet werden soll
DS:BX Einschaltmaskenaufzeichnung. Dies Maske beschreibt welche Merkmale eingeschaltet
werden sollen. Ein Aufzeichnung die nichts enthält, ermöglicht alle Merkmale.
Rücklauf keine
Anmerkung dies Funktion ist der Gegenteil von Funktion 5 (ausschalten Programm).
Funktion 5: Programm ausschalten
Aufruf CX Nummer des Programms welches ausgeschaltet werden soll
DS:BX Ausschaltmaskenaufzeichnung. Dies Maske beschreibt welche Merkmale ausgeschaltet
werden sollen. Eine Aufzeichnung die nichts enthält, schaltet alle Merkmale aus.
Rücklauf keine
Anmerkung manchmal ist es notwendig ein Programm auszuschalten um Konflikte mit anderen
Programmen zu verhindern, diese Funktion ist dafür gedacht.
Diese Funktion ist das Gegenteil von Funktion 4 (einschalten Programm).
Funktion 70h EEROM Handler (Tandy 1000HX)
Aufruf AH 00h lesen vom EEROM
BL 00h
01h schreiben zum EEROM
BL Welches Wort geschrieben werden soll (0-15)
DX Wert des zu schreibenden Wortes
Rückgabe DX (AH= 00h) Wert des Wortes
CF gesetzt wenn Fehler (System ist kein Tandy 1000 HX)
Funktion 80h OS Hook - Gerät öffnen (AT, XT/286, PS/2)
Aufruf AH 80h
BX Gerät ID
CX Prozeß ID
Rückgabe CF gesetzt wenn Fehler
AH Status
Anmerkung 1) erwirbt die Rechte an einem logisch Gerät für einen Vorgang.
2) dieser Aufruf, zusammen mit fns 81h und 82h, definiert ein einfaches Protokoll
daß benutzt werden kann, um über die Verwendung von Geräten bei mehrfacher
Benutzung zu entscheiden. Ein Multitasking Programmmanager sollte den int 15h
umleiten um den geeigneten Service zu liefern.
3) die vorgegebene BIOS Routine dieser Funktion gibt einfach in AH= 00h
zurück und das CF wird gelöscht.
Funktion 81h Gerät schließen (AT, XT/286, PS/2)
Aufruf AH 81h
BX Gerät ID
CX Prozeß ID
Rückgabe CF gesetzt wenn Fehler
AH Status
Anmerkung 1) Freigeben eines logischen Gerätes nach einem abgearbeiteten Vorgang.
2) Ein Multitasking Programmmanager sollte den int 15h umleiten um den
geeigneten Service zu liefern.
3) die vorgegebene BIOS Routine dieser Funktion gibt einfach in AH= 00h
zurück und das CF wird gelöscht.
Funktion 82h Programmbeendigung (AT, XT/286, PS/2)
AH 82h
BX Gerät ID
Rückgabe CF gesetzt wenn Fehler
AH Status
Anmerkung 1) schließt alle logischen Geräte die mit Funktion 80h geöffnet wurden.
2) Ein Multitasking Programmmanager sollte den int 15h umleiten um den
geeigneten Service zu liefern.
3) die vorgegebene BIOS Routine dieser Funktion gibt einfach in AH= 00h
zurück und das CF wird gelöscht.
Funktion 83h Ereignis abwarten (AT, XT/286, Convertible, PS/2 50+)
Aufruf AH 83h
AL 00h einstellen Intervall
01h abbrechen
CX:DX Anzahl Mikrosekunden abwarten (eine Einheit sind 976 Mikrosekunden)
ES:BX Zeiger zum Semaphorkennzeichen (Bit 7 ist gesetzt sobald der Intervall abläuft)
(Zeiger zum Speicher des Aufrufers) (einige Quellen schreiben das Bit 15 gesetzt ist)
Rückgabe CF gesetzt (1) falls Funktion schon beschäftigt ist
Anmerkung 1) erbittet das setzen des Semaphors nach einem spezifizierten Intervall oder
annulliert ein vorhergehende Anforderung.
2) der aufrufende Programm ist verantwortlich für das Löschen des Semaphors
bevor diese Funktion angefordert wird.
3) die eigentliche Dauer ist immer ein mehrfaches Integral von
976 Mikrosekunden. Die CMOS Datum/Taktgeber Chip Interrupts werden
benutzt um diese Funktion zu realisieren.
4) diese Funktion erlaubt programmierte, hardware-unabhängige Verzögerungen in
einer feineren Auflösung als dies durch die Beutzung der MS-DOS
Zeitfunktionen (int 21h/fn 2Ch) möglich wäre. Diese gibt die Zeit in
hunderstel Sekunden zurück.
5) CX:DX ist eine 4-Byte Ganzzahl.
Funktion 84h lesen Joystick Einstellungen (AT, XT/286, PS/2)
Aufruf AH 84h
DX 00h lesen der aktuellen Schaltereinstellungen (Rückgabe in AL)
01h Stellung der Joysticks lesen
Rückgabe CF gesetzt wenn Fehler
(fn 00h)
AL Schaltereinstellungen (Bits 7-4)
( fn 01h)
AX Joystick A (X) Wert
BX Joystick A (Y) Wert
CX Joystick B (X) Wert
DX Joystick B (Y) Wert
Anmerkung 1) ein Fehler wird zurückgegeben, falls DX keine zulässige Unterfunktion enthält.
2) wenn kein Spieleadapter installiert ist, geben alle Werte 00h zurück.
3) Bei Benutzung eines 250K Ohm Joysticks, liegen die Potentiometer Werte
gewöhnlich im Bereich von 0-416 (0000h-01A0h).
Funktion 85h System Anforderung (SysReq) Taste gedrückt (außer PC, PCjr, XT)
Aufruf AH 85h
AL 00h Taste gedrückt
01h Taste losgelassen
Rückgabe CF gesetzt wenn Fehler
AH Fehlercode
Anmerkung 1) wird durch die BIOS Tastaturroutine aufgerufen, sobald die SysReq Taste erkannt wurde.
2) der BIOS Handler für diesen Aufruf ist eine Dummy-Routine die immer einen
erfolgreichen Status meldet, falls diese nicht mit einer ungültigen Unterfunktion in AL aufgerufen wurde.
3) Ein Multitasking Programmmanager sollte den int 15h umleiten um
sich zu melden sobald der Anwender die SysReq Taste betätigt.
Funktion 86h Verzögern (außer PC, PCjr, XT)
AH 86h
CX:DX 4-Byte Ganzzahl, Anzahl Mikrosekunden verzögern
Rückgabe CF gelöschen nach der Verzögerung
CF gesetzt unmittelbar beim auftreten von Fehlern
Anmerkung 1) Suspendiert das aufrufenden Programm für ein spezifizierten Intervall in Mikrosekunden.
2) die eigentliche Dauer ist immer ein mehrfaches Integral von
976 Mikrosekunden.
3) diese Funktion erlaubt programmierte, hardware-unabhängige Verzögerungen in
einer feineren Auflösung als dies durch die Beutzung der MS-DOS
Zeitfunktionen (int 21h/fn 2Ch) möglich wäre. Diese gibt die Zeit in
hunderstel Sekunden zurück.
Funktion 87h Speicherblock verschieben (ausschließlich 2-3-486 Maschinen)
AH 87h
CX Anzahl der zu verschiebenden Worte
ES:SI Zeiger zur Global Deskriptor Tabelle( GDT)
Offset 00h-0Fh reserviert, auf Null gesetzt
00h Null Deskriptor
08h uninitialisiert, wird erzeugt im GDT Deskriptor
10h-11h Quelle Segmentlänge in Bytes
(2*CX-1 oder größer)
12h-14h 24-bit gerade Quelladresse
15h Zugriffsrechte Byte (immer 93h)
16h-17h reserviert, auf Null gesetzt
18h-19h Ziel Segmentlänge in Bytes
(2*CX-1 oder größer)
1Ah-1Ch 24-bit gerade Zieladresse
1Dh Zugriffsrechte Byte (immer 93h)
1Eh-2Fh reserviert, auf Null gesetzt
20h uninitialisiert, benutzt von BIOS
28h uninitialisiert, wird erzeugt im SS Deskriptor
Rückgabe CF gesetzt wenn Fehler
AH Status
00h Quelle wurde an das Ziel kopiert
01h Paritätsfehler
02h Ausnahme Interrupt Fehler
03h Auswertung der Adresszeile 20 scheiterte
Anmerkung 1) die GDT Tabelle setzt sich aus sechs 8-byte Deskriptoren zusammen, die
von der CPU in geschützten Modus benutzt wird. Der vier Deskriptoren
der Offsets 00h-0Fh und 20h-2Fh werden durch das BIOS gefüllt, bevor der
CPU Modus umgeschaltet wird.
2) die Adressen die in der Deskriptor Tabelle benutzt werden, sind gerade (physisch)
24-bit Adressen in dem Bereich 000000h-0FFFFFFh - keine Segmente und
Offsets - mit dem niederwertigen Byte an der niedrigsten Adresse und dem
höherwertigen Byte an der höchsten Adresse.
3) Die Interrupts sind während dieses Aufrufes ausgeschaltet; kann zu Störungen
beim arbeiten mit comm Programmen, Netzwerktreiber, oder anderer Software führen,
die sich prompten Service von Hardware Interrupts verlassen.
4) Dieser Aufruf ist nicht zulässig in der OS/2 Kompatibilitäts Box.
5) Der Aufruf verschiebt ein Speicherblock von irgendeiner Adresse im echten
oder geschützten Modus zu igendeiner anderen in den beiden Modi.
Funktion 88h Größe des Erweiterungsspeichers ermitteln (AT, XT/286, PS/2)
Aufruf AH 88h
Rückgabe AX Anzahl zusammenhängender 1K Blöcke des Erweiterungsspeichers
beginnent bei der Adresse 1024k
Anmerkung dieser Aufruf funktioniert nicht in der OS/2 Kompatibilitäts Box.
Funktion 89h Prozessor in geschützten Modus umschalten (AT, XT/286, PS/2)
Aufruf AH 89h
BH Interruptnummer für IRQ0, geschrieben zu ICW2 von 8259 PIC #1
(muß durch 8 teilbar sein, entscheidet IRQ0-IRQ7)
BL Interruptnummer für IRQ8, geschrieben zu ICW2 von 8259 PIC #2
(muß durch 8 teilbar sein, entscheidet IRQ8-IRQ15)
ES:SI Zeiger zur 8-Einträge umfassende Deskriptor Tabelle für geschützten Modus:
Offset 00h Null Deskriptor, initialisiert mit Null
08h GDT Deskriptor
10h IDT (Interrupt Deskriptor Tabelle) Deskriptor
18h DS, Datensegment des Benutzers
20h ES, Extrasegment des Benutzers
28h SS, Stacksegment des Benutzers
30h CS, Codesegment des Benutzers
38h uninitialisiert, benutzt zur Erstellung eines Deskriptors
für das BIOS Codesegment
Rückgabe CF gesetzt wenn Fehler
AH 0FFh Fehler beim schalten der Adresszeile 20
CF gelöscht Funktion erfolgreich (CPU ist im geschützten Modus)
AH 00h
CS benutzerbestimmt Selektor
DS benutzerbestimmt Selektor
ES benutzerbestimmt Selektor
SS benutzerbestimmt Selektor
Anmerkung der Anwender muß die ersten sieben Deskriptoren initialisieren; der achte
wird vom BIOS gefüllt, um eine Adressierbarkeit für seine eigene Ausführung zu liefern.
Der aufrufende Programm kann den achten Deskriptor nach Beendigung dieser
Funktion modifizieren und benutzen.
Funktion 90h Schleife Gerät ist beschäftigt (außer PC, PCjr, XT)
Aufruf AH 90h
AL vordefinierter Gerättypen Code:
00h Festplatte (kann Zeit überschreiten)
01h Diskette (kann Zeit überschreiten)
02h Tastatur (keine Zeitüberschreitung möglich)
03h PS/2 pointing device (kann Zeit überschreiten)
80h Netzwerk (keine Zeitüberschreitung möglich)
0FCh Festplatte zurücksetzen (PS/2) (kann Zeit überschreiten)
0FDh Diskettenmotor Start (kann Zeit überschreiten)
0FEh Drucker (kann Zeit überschreiten)
ES:BX Zeiger zum Anforderungsblock für Typencodes 80h bis 0FFh
(für Netzwerk Adapter ES:BX ist ein Zeiger zum Netzsteuerungsblock)
Rückgabe CF gesetzt falls Wartezeit um ist
gelöscht falls Treiber warten muß
Anmerkung 1) benutzt von NETBIOS.
2) auswählbar Typencodes sind wie folgt belegt:
00h-7Fh nicht ablaufinvariante Geräte; OS entscheidet den Zugriff
auf mehrfach aufrufbare serielle Geräte
80h-0BFh ablaufinvariant Geräte; ES:BX zeigt zu einen eindeutigen Kontrollblock
0C0h-0FFh nur Warten Aufrufe, kein POST int 15/fn 91h Ergänzungsaufruf
3) aufgerufen von dem BIOS Festplatten, Drucker, Netzwerk, und Tastatur Handler
um ein programmiertes Warten für den I/O Abschluß durchzuführen.
4) Ein Multitasking Programmmanager sollte den int 15h/fn 90h umleiten um
andere Aufgaben zu versenden solange die I/O Operation aktiv ist.
5) die vorgegebene BIOS Routine dieser Funktion gibt einfach in AH= 00h
zurück und das CF wird gelöscht.
Funktion 91h Interrupt vervollständigen (AT, XT/286, PS/2 50+)
Aufruf AH 91h
AL Typencode (siehe AH= 90h vorher)
00h-7Fh mehrfach aufrufbare serielle Geräte
80h-0BFh ablaufinvariante Geräte
ES:BX Zeiger zum Anforderungsblock für Typenccodes 80h bis 0BFh
Rückgabe AH 00h
Anmerkung 1) benutzt von NETBIOS.
2) aufgerufen vom BIOS Festplatten, Netzwerk, und Tastatur Handler um zu
signalisieren das die I/O Operation abgeschlossen oder das Gerät bereit ist.
3) vordefinierte Gerätarten die den Geräte POST benutzen können sind:
00H Festplatte (kann Zeit überschreiten)
01H Diskette (kann Zeit überschreiten)
02H Tastatur (keine Zeitüberschreitung möglich)
03H PS/2 pointing device (kann Zeit überschreiten)
80H Netzwerk (keine Zeitüberschreitung möglich)
4) die BIOS Drucker Routine benutzt diese Funktion nicht, weil die
Druckerausgabe nicht Interruptgesteuert ist.
5) Ein Multitasking Programmmanager sollte den int 15h/fn 91h umleiten um
andere Aufgaben durchzuführen, sobald die I/O Operation abgeschlossen ist.
6) die vorgegebene BIOS Routine dieser Funktion gibt einfach in AH= 00h
zurück und das CF wird gelöscht.
Funktion 0C0h Feststellen Systemkonfiguration (XT nach 1/10/86, PC Convertible,
XT/286, AT, PS/2)
Aufruf AH 0C0h
Rückgabe CF gesetzt falls das BIOS den Aufruf nicht unterstützt
ES:BX Zeiger zur ROM System Deskriptor Tabelle
Bytes 00h-01h Anzahl Bytes in der folgenden Tabelle (norm. 16 Bytes)
02h System ID Byte; siehe Abschnitt 2 zur Interpretation
03h sekundär ID Byte unterscheidet zwischen AT und XT/286, etc.
04h BIOS Revisionsebene, 0 für erste Freigabe, 1 für zweite, etc.
05h Besonderheiten Informationsbyte
Bits 0 reserviert
1 Mikro Kanal Bus (an Stelle von ISA oder EISA)
2 erweiterter BIOS Bereich ab 640k
3 warten auf ein externes Ereignis wird unterstützt (int 15fn41)
benutzt beim Convertible; reserviert bei PS/2 Systemen
4 kbd intrcpt: int 15h, fn 04h nach int 09h aufgerufen
5 Echtzeituhr installiert
6 zweiter 8259 installiert (Kaskade IRQ2)
7 DMA Kanal 3 - benutzt vom Festplatten BIOS
06h Unbekannte (auf 0 gesetzt) (reserviert von IBM)
07h Unbekannte (auf 0 gesetzt) (reserviert von IBM)
08h Unbekannte (auf 0 gesetzt)
09h Unbekannte (auf 0 gesetzt) (Award BIOS Urheberrecht hier)
Anmerkung 1) Int 15h ist auch benutzt für den Multitask Hook auf PS/2 Maschinen.
Bis jetzt keine Register Einstellungen verfügbar.
2) der 1/10/86 XT BIOS gibt einen falschen Wert im Besonderheiten Byte zurück.
Funktion 0C1h Rückgabe erweiterter BIOS Datenbereich Segmentadresse (PS/2)
Aufruf AH 0C1h
Rückgabe CF gesetzt wenn Fehler
ES Segment vom XBIOS Datenbereich
Anmerkung 1) der XBIOS Datenbereich wird am oberen Ende des konventionellen
Speicher während der POST (Power-On-Self-Test) abläuft belegt.
2) das Wort an 0040:0013h (Speichergröße) wird aktualisiert, damit der
verfügbare Speicher für DOS und Anwenderprogramme zurückgegeben wird.
3) das erste Byte im XBIOS Datenbereich ist initialisiert mit seiner Länge in K.
4) ein Programm kann durch den int 15h/fn 0C0h überprüfen ob der XBIOS
Datenbereich existiert.
Funktion 0C2h pointing device BIOS Schnittstelle (DesQview 2.x) (PS/2)
Aufruf AH 0C2h
AL 00h aktivieren/deaktivieren pointing device
BH 00h deaktivieren
01h aktivieren
01h zurücksetzen pointing device
zurücksetzen der Maus oder ein anderes pointing device
setzen der Abtastrate, Auflösung, und andere Kenndaten auf ihre
vorgegebenen Werte.
Rückgabe BH Gerät ID ( 0= erstes)
Anmerkung 1) nach einem zurücksetzen, der Status des
pointing device ist wie folgt:
ausgeschaltet;
Abtastrate ist 100 Meldungen pro Sekunde;
Auflösung ist 4 Schritte pro Millimeter;
Skalierung ist 1 zu 1.
2) die Paketgröße der Daten bleibt unverändert bei dieser fn.
3) Anwendungen können die Unterfunktionen der fn 0C2h benutzen,
um die Geärte auf andere Werte zu initialisieren und
dann das Gerät mit fn 00h aktivieren.
4) BL ist wird geändert.
02h einstellen Abtastrate
BH 00h 10/Sekunde
01h 20/Sekunde
02h 40/Sekunde
03h 60/Sekunde
04h 80/Sekunde
05h 100/Sekunde (vorgegeben)
06h 200/Sekunde
03h einstellen Auflösung
BH 00h ein Schritt pro mm
01h zwei Schritte pro mm
02h vier Schritte pro mm (vorgegeben)
03h acht Schritte pro mm
04h Typ des pointing device feststellen
Rückgabe BH ID Code für die Maus oder anderes pointing device
05h Initialisieren pointing device Schnittstelle
setzten der Paketgröße der Daten für die Maus oder anderes pointing
device, und initialisieren der Auflösung, Abtastrate und der Skalierung
auf ihre vorgegeben Werte.
BH Paketgröße Daten (1-8 Bytes)
Anmerkung nach diesem Arbeitsgang, der Status des pointing device
ist wie folgt:
a) ausgeschaltet;
b) Abtastrate ist 100 Meldungen pro Sekunde;
c) Auflösung ist 4 Schritte pro Millimeter;
d) Skalierung ist 1 zu 1.
06h Status feststellen oder einstellen Skalierungsfaktor
gibt den aktuellen Zustand von der Maus oder ein anderes pointing
device zurück, oder setzt den Skalierungsfaktor.
BH 00h Rückgabe Gerätestatus
Rückgabe BL Statusbyte
Bits 0 gesetzt falls rechter Knopf gedrückt ist
1 reserviert
2 gesetzt falls linker Knopf gedrückt ist
3 reserviert
4 0 1:1 Skalieren
1 2:1 Skalieren
5 0 Gerät ist ausgeschaltet
1 Gerät ist eingeschaltet
6 0 Stream Modus
1 Remote Modus
7 reserviert
CL Auflösung
00h 1 Schritt pro Millimeter
01h 2 Schritte pro Millimeter
02h 4 Schritte pro Millimeter
03h 8 Schritte pro Millimeter
DL Abtastrate (in Hex)
0Ah 10 Meldungen pro Sekunde
14h 20 Meldungen pro Sekunde
28h 40 Meldungen pro Sekunde
3Ch 60 Meldungen pro Sekunde
50h 80 Meldungen pro Sekunde
64h 100 Meldungen pro Sekunde
0C8h 200 Meldungen pro Sekunde
01h einstellen Skalierung 1:1
02h einstellen Skalierung 2:1
07h einstellen Adresse pointing device handler
meldet dem BIOS pointing device Treiber die Adresse einer Routine
die aufgerufen wird sobald Daten an dem pointing device verfügbar
sind.
ES:BX Adresse vom Geräte Handler des Benutzers
Rückgabe AL 00h
Rückgabe CF gesetzt wenn Fehler
AH Status
00h erfolgreich
01h ungültige Funktion
02h ungültige Eingabe
03h Schnittstellenfehler
04h gebraucht zur Rücksendung
05h kein Geräte Handler installiert
Anmerkung 1) die Werte in BH für diese Funktionen die als Eingabe dienen, werden
in unterschiedlich Adressen für jede Unterfunktion gespeichert.
2) der Benutzer Handler für pointing device Daten wird via ein FAR Call
aufgerufen, mit vier Parameter auf dem Stapel:
SS:SP+0Ah Zustand
SS:SP+08h x Koordinaten
SS:SP+06h y Koordinaten
SS:SP+04h z Koordinaten (immer 0)
der Handler muß via ein FAR Return beendet wrede, ohne das die
Parameter vom Stapel entfernt werden.
3) das Parameterstatus Wort das an den Handler zurückgegeben wird,
ist interpretiert wie folgt:
Bits 0 linker Knopf gedrückt
1 rechter Knopf gedrückt
2-3 reserviert
4 Vorzeichen vom x Wert ist negativ
5 Vorzeichen vom y Wert ist negativ
6 Überlauf beim x Wert
7 Überlauf beim y Wert
8-0Fh reserviert
Funktion 0C3h aktivieren/deaktivieren Watchdog Zeitüberschreitung (PS/2 50+)
Aufruf AH 0C3h
AL 00h deaktivieren Watchdog
01h aktivieren Watchdog
BX Zeitzähler
Rückgabe CF gesetzt wenn Fehler
Anmerkung 1) der Watchdog Zeit-Zähler erzeugt ein NMI.
2) dies ist zum Schutz mit einem echten OS , damit dies nicht ahhängig
ist und temporäre Meister nicht fähig sind den Bus für immer zu belegen.
Funktion 0C4h programmierbare Optionsauswahl (PS/2 50+)
Aufruf AH 0C4h
AL 00h Rückgabe Basisadresse POS Register
01h aktivieren Steckplatz
BL Steckplatz Nummer
02h aktivieren Adapter
Rückgabe CF gesetzt wenn Fehler
DX Basisadresse POS Register (falls Funktion 00h)
Anmerkung 1) Fn 00h gibt die Basisadresse des programmierbaren Optionsauswahl Registers zurück,
aktiviert ein Steckplatz zur Einstellung, oder aktiviert einen Adapter.
2) ausschließlich zulässig auf Maschinen mit Mikro Kanal Architektur (MCA) Bus.
3) nachdem ein Steckplatz mit fn 01h aktiviert wurde, wesentlich Information
für den Adapter können erhalten werden, indem eine Eingabetransaktion
für den Port durchgeführt wird.
Port Funktion
100h MCA ID (niederwertiges Byte)
101h MCA ID (höherwertiges Byte)
102h Optionsauswahl Byte 1
Bit 0 0 falls deaktiviert
1 falls aktiviert
103h Optionsauswahl Byte 2
104h Optionsauswahl Byte 3
105h Optionsauswahl Byte 4
Bits 6-7 sind Kanal Kontrollanzeiger
106h Unteradresse Erweiterung (niedwertiges Byte)
107h Unteradresse Erweiterung (höherwertiges Byte)
Funktion 0C5h benutzt von PS/2 Modell 50+ und Olivetti MCA Maschinen
benutzt von Desqview 2.2
benutzt von Lotus 123 Freigabe 2.2
benutzt von Microsoft Wort 5.0
Anmerkung Funktionen unbekannt. Berichtet von InfoWorld November 13 1989's Mikro Kanal
386 Test als ein Konflikt zwischen den vorstehenden Softwarepacketen. InfoWorld
sagte daß Quarterdeck (Desqview) an einer Behebung für ihr Produkt arbeitet.
Produkt. Keine anderen Information.
Funktion 0DEh DesQview Services (DesQview)
┌─────────────────────────────────────────────────────────────────────────────┐
│ Interrupt 16h Tastatur I/O 3**9 │
└─────────────────────────────────────────────────────────────────────────────┘
(0:0058h) Zugriff auf die Tastatur. Scancodes siehe Anhang 1. ASCII Codes siehe
Anhang 2.
IBM's originale Tastatur Anordnung ist bezeichnet als eine 84-Tasten
oder "old style" Tastatur. Es hat die Funktionstasten auf der linken
und ein verankertes ein Cursor/numerisches Tastenfeld auf der rechten Seite.
Bei der 101-Tasten "new style" oder "enhanced" Tastatur (wie auf den PS/2s benutzt)
sind verschiedene Tasten hinzugekommen. Das frühere BIOS kann die neuen Scancodes
nicht feststellen und das neue BIOS hat hierfür vernünftigerweise neue Funktionsaufrufe.
anstatt die alten zu erweitern. Dieses verursacht einige Belästigungen
beim schreiben von Programme welche beide Tastaturen voll unterstützen
müssen. Die meisten Programme begrenzen daher ihre Funktionen auf
die 84-Tasten Tastatur im Interesse der Rückwärtkompatibilität.
Der SWITCHES Befehl in der CONFIG.SYS zwingt DOS 4.0 dazu, den Standard
int 16h Aufruf für die Tastatur I/O anstatt den erweiterten int 16h
Aufruf zu benutzen.
Funktion 00h holen Tastatureingabe - lesen des nächsten Zeichens in den Tastaturpuffer,
wenn kein Taste bereit, warten bis eine Taste eingegeben wird.
Aufruf AH 00h
Rückgabe AH Auswahlcode
AL ASCII Zeichen
Anmerkung 1) entfernt Tastenanschlag von Puffer (löschen nach dem lesen).
2) tut nicht arbeiten mit der besonders Tasten auf der 101-key " steigerte " Tastatur.
Funktion 01h kontrollieren Tastaturpuffer - nicht löschen
Aufruf AH 01h
Rückgabe ZF 0 (gelöscht) falls Zeichen im Puffer vorhanden
1 (gesetzt) wenn kein Zeichen im Puffer vorhanden
AH Auswahlcode des Zeichens (falls ZF= 0)
AL ASCII Zeichen falls benutzbar
Anmerkung 1) Tastenanschlag wird nicht vom Puffer entfernt. Dasselbe Zeichen und Auswahlcode
wird beim nächsten Aufruf von Int 16h/fn 00h zurückgegeben.
2) dies Aufrufen entfernt die 101-key codes von dem Puffer falls ihnen ein
ein 84-key Code vorausgeht.
Funktion 02h Umschaltzustand - feststellen Bit Kennzeichen deuten auf den Umschaltzustand hin
Aufruf AH 02h
Rückgabe AL Zustandsbyte (dasselbe wie [0040:0017])
Bits 7 Einfügen an
6 CapsLock an
5 NumLock an
4 ScrollLock an
3 Alt Taste gedrückt
2 CTRL (STRG) Taste gedrückt
1 links Umschalttaste gedrückt
0 rechte Umschalttaste gedrückt
Anmerkung das Tastatur Kennzeichenbyte ist gespeichert im BIOS Datenbereich an 0000:0417h.
Funktion 03h Tastatur - einstellen Wiederholungsfaktor (PCjr, AT, XT/286, PS/2)
Aufruf AH 03h
AL 00h zurücksetzen typematic standard (PCjr)
01h erhöhen anfängliche Verzögerung (PCjr)
02h vermindern Wiederholungsrate um 1/2 (PCjr)
03h erhöhen beide Verzögerungen um 1/2( PCjr)
04h ausschalten typematic( PCjr)
05h einstellen Wiederholungsfaktor (AT, PS/2)
BH 00h-03h für Verzögerungen von 250ms, 500ms, 750ms, oder 1 Sekunde
0, 0 250ms
0, 1 500ms
1, 0 750ms
1, 1 1 Sekunde
BL 00h-1Fh für Wiederholungsraten von 30cps abwärts zu 2cps
00000 30 01011 10.9 10101 4.5
00001 26.7 01100 10 10110 4.3
00010 24 01101 9.2 10111 4
00011 21.8 01110 8.6 11000 3.7
00100 20 01111 8 11001 3.3
00101 18.5 10000 7.5 11010 3
00110 17.1 10001 6.7 11011 2.7
00111 16 10010 6 11100 2.5
01000 15 10011 5.5 11101 2.3
01001 13.3 10011 5.5 11110 2.1
01010 12 10100 5 11111 2
Rückgabe keine
Anmerkung 1) Unterfunktion 05h ist verfügbar auf ATs mit dem ROM BIOS Datum 11/15/85 und
später, dem XT/286, und dem PS/2.
2) Unterfunktion 0 (Standard Tastaturfestlegung) schaltet die Tastatur in den
Originalzustand zurück. Der Originalzustand beim einschalten ist Typematic an,
normale anfängliche Verzögerung und normalem Wiederholungsfaktor.
3) Unterfunktion 1 (erhöhen anfängliche Verzögerung) erhöht die Verzögerung zwischen dem
ersten eingebenen Zeichen und den eingegebenen Wiederholungszeichen.
4) Unterfunktionen 0 bis 4, immer wenn der Wiederholungsfaktor geändert wird,
alle vorhergehend Einstellungen sind entfernt.
Funktion 04h Tastaturklick umschalten (PCjr und Convertible)
Aufruf AH 04h
AL 00h Tataturklick aus
01h Tataturklick an
Rückgabe keine
Funktion 05h Zeichen in Tastaturpuffer einfügen (AT oder PS/2 mit enhanced kbd)
Aufruf AH 05h
CH Auswahlcode
CL ASCII Zeichen
Rückgabe CF gesetzt wenn Fehler
AL 00h erfolgreich
01h falls Puffer voll
Anmerkung Plaziert ein Zeichen und den Auswahlcode an das Ende vom Tastaturpuffer.
Funktion 06h Zeichen in Tastaturpuffer schreiben (Fansi-Console bis 2.00)
Aufruf AH 06h
BX erweiterter Tastenwert der in den Tastaturpuffer plaziert werden soll.
Rückgabe Unbekannt
Anmerkung Dieser Aufruf kann ignoriert werden, seit er durch die Funktion 05h ersetzt wird.
Funktion 07h Ändern Umschaltzustand (Fansi-Console bis 2. 00)
Aufruf AH 07h
AL Wert Umschaltzustand
Rückgabe Unbekannte
Anmerkung Zustandsbyte ist dasselbe wie in Funktion 02h.
Funktion 10h holen erweiterte Tastatureingabe und lesen (F11, F12 erweiterte Tastatur)
(XT/286, PS/2, AT mit "enhanced" Tastatur)
Aufruf AH 10h
Rückgabe AH Auswahlcode
AL ASCII Zeichen falls verfügbar
Anmerkung 1) liest ein Zeichen und den Auswahlcode vom Tastaturpuffer.
2) diese Funktion sollte für die erweiterten Tastaturen an Stelle von Int 16h fn 00h benutzt werden.
Es erlaubt den Anwendungen die zusätzlichen Tasten F11, F12, und die zusätzlichen
Cursortasten abzufragen.
3) dies ist eine erweiterte Version von Funktion 00h.
Funktion 11h Kontrollieren erweiterten Tastenanschlag (F11-F12 erweiterte Tastatur)
( XT/286, PS/2, AT mit "enhanced" Tastatur)
Aufruf AH 11h
Rückgabe ZF 0 (gelöscht) falls Taste gedrückt
AH Auswahlcode
AL ASCII Zeichen falls erfügbar
1 falls Puffer leer ist
Anmerkung 1) der Tastenanschlag wird nicht vom Puffer entfernt. Dasselbe Zeichen und der Auswahlcode
wird beim nächsten Aufrufe von Int 16h/fn 10h zurückgegeben.
2) diese Funktion sollte für die erweiterten Tastaturen an Stelle von Int 16h fn 00h benutzt werden.
Es erlaubt den Anwendungen die zusätzlichen Tasten F11, F12, und die zusätzlichen
Cursortasten abzufragen.
Funktion 12h erweiterten Umschaltzustand feststellen (F11, F12 erweiterte Tastatur)
Aufruf AH 12h
Rückgabe AX Zustandswort
AL Bit 0 rechte Umschalttaste gedrückt
1 linke Umschalttaste gedrückt
2 CTRL (STRG) Taste gedrückt
3 Alt Taste gedrückt
4 ScrollLock eingeschaltet
5 NumLock eingeschaltet
6 CapsLock eingeschaltet
7 Einfügen ist eingeschaltet
AH Bit 0 linke Control Taste gedrückt
1 linke ALT Taste gedrückt
2 rechte Control Taste gedrückt
3 rechte ALT Taste gedrückt
4 Scroll Lock Taste gedrückt
5 NumLock Taste gedrückt
6 CapsLock Taste gedrückt
7 SysReq Taste gedrückt
Anmerkung diese Funktion sollte für die erweiterten Tastaturen an Stelle von Int 16h fn 02h benutzt werden.
Funktion 4Fh prüfen ob installiert (Gerkey)
Aufruf AH 4Fh
AL 56h Funktion
BX 00h prüfen ob installiert
Rückgabe AX 0FFFFh speicherresistent und aktiv
alle anderen Werte - nicht speicherresistent
BX Versionsnummer
BH übergeordnete Versionsnummer
BL untergeordnete Versionsnummer
Funktion 4Fh Komma/Punkt Umschaltung (Gerkey)
Aufruf AH 4Fh
AL 56h Funktion
BX 01h Komma/Punkt umschalten
Rückgabe AX 0FFFFh speicherresistent und aktiv
alle anderen Werte - nicht speicherresistent
Anmerkung Dieser Aufruf ändert die Bedeutung der Punkt/Komma Taste vom numerischen
Eingabeblock. Jenachdem wie die aktuelle Belegung der Taste ist, ändert
sich diese (z.B. wenn Punkt aktiv ist, wird auf Komma umgeschaltet).
Funktion 75h einstellen Anzahl Takteinheiten für Abtastung (Scanning) (pcAnywhere 2.00)
Aufruf AH 75h
AL Anzahl Takteinheiten
Rückgabe keine
Anmerkung 1) setzt Anzahl von 55ms Zeit-Zähler Takteinheiten um Bildschirmänderungen zu überprüfen.
2) pcAnywhere ist ein Programm das es erlaubt über eine serielle Verbindung
an einer anderen Maschine zu arbeiten.
Funktion 76h Modus zur Fehlerkontrolle einstellen (pcAnywhere 2.00)
Aufruf AH 76h
AL Art der Fehlerkontrolle
00h keine
01h schnell
02h langsam
Rückgabe keine
Funktion 77h reserviert (pcAnywhere 2.00)
pcAnywhere API - reserviert
Funktion 78h aufzeichnen aus (pcAnywhere 2.00)
Aufruf AL 00h auf einen anderen Aufruf warten
01h beenden aber als TSR belassen
02h automatischer Modus - überwachen DTR
0FFh im aktuell Bedienungsmodus belassen (pcAnywhere 2.1)
Rückgabe keine
Funktion 79h prüfen ob installiert (pcAnywhere 2.00)
Aufruf AH 79h
AL 00h prüfen ob installiert
Rückgabe AX 0FFFFh speicherresistent und aktiv
0FFFEh speicherresistent aber nicht aktiv
0FFFDh speicherresistent TSR
0FFFCh automatischer Modus
alle anderen Werte - nicht speicherresistent
Funktion 7Ah abbrechen pcAnywhere Sitzung (pcAnywhere 2.00)
Aufruf AH 7Ah
Rückgabe keine
Anmerkung beläßt pcAnywhere speicherresistent, ist aber unfähig einen Aufruf zu beantworten.
Funktion 7Bh aktivieren/deaktivieren Operationen (pcAnywhere 2.00)
Aufruf AH 7Bh
AL Status
00h deaktiviert
01h aktiviert
Rückgabe keine
Anmerkung der entfernte Bildschirm ist automatisch aufgefrischt sobald die Sitzung eingeschaltet wird.
Funktion 7Ch holen Port Ausstattung (pcAnywhere 2.00)
Aufruf AH 7Ch
Rückgabe AH Portnummer in binär (0-15)
AL Baud-Rate
00h 50
01h 75
02h 110
03h 134.5
04h 150
05h 300
06h 600
07h 1200
08h 1800
09h 2000
0Ah 2400
0Bh 4800
0Ch 7200
0Dh 9600
0Fh 19200
Funktion 7Dh holen/einstellen Terminal Parameter (pcAnywhere 2.00)
Aufruf AH 7Dh
AL 00h einstellen Parameter
01h holen Parameter
02h holen Ausstattungskopf und Terminal Parameter
CX:DS Adresse vom Terminal Parameterblock
Rückgabe AL 00h nichts
01h aktueller Terminal Parameterblock in CX:DS
02h Ausstattungskopf und Terminal Parameterblock in CX:DS
Anmerkung Terminal Parameterblock Format: (1152 Bytes) (dezimal)
384 Bytes CRT Steuerungsinformation
Bytes Funktion
1-8 Cursor aufwärts
9-16 Cursor abwärts
17-24 Cursor links
25-32 Cursor rechts
33-40 Cursor Pos1
41-48 löschen Bildschirm
49-56 löschen bis zum Ende der Zeile
57-64 löschen bis zum Ende der Seite
65-72 einfügen Zeile
73-80 löschen Zeile
81-88 einfügen Zeichen
89-96 löschen Zeichen
97-104 Cursorposition Zuführung
105-112 zwischen Zeile und Spalte
113-120 nach Cursorposition
121-128 CRT Initialisierung
256 Bytes Zeichen Übersetzungstabelle
übersetzt ASCII Zeichen von Host. Normalerweise werden die IBM
Grafikzeichen in andere anzeigbare Symbole übersetzt.
512 Bytes Tastatur Folgen
641-644 Cursor aufwärts
645-648 Cursor abwärts
649-652 Cursor links
653-656 Cursor rechts
657-660 Pos1
661-664 Ende
665-668 PgUp
669-672 PgDn
673-676 Einfügen
677-680 Löschen
681-684 Control-Pos1
685-688 Control-End
689-692 Control-PgUp
693-696 Control-PgDn
697-700 Escape
701-740 F1 ... F10
741-780 S_F1 ... S_F10
781-820 CTRL_F1 ... CTRL_F10
821-860 ALT_F1 ... ALT_F10
861-964 Alt A-Z
965-1004 Alt 0-9
1005-1008 Alt=
1009-1012 Alt -
1013-1016 Drucken Bildschirm
1017-1020 Ctrl-Cursor links
1021-1024 Ctrl-Cursor rechts
1025-1120 reserviert
1121-1124 beginnen conv. Modus
1125-1128 entfernt drucken aus
1129-1132 entfernt drucken an
1133-1136 Backspace
1137-1140 auffrischen Bildschirm
1141-1144 sende nächsten Code
1145-1148 Anzeige oberen 24 Zeilen
1149-1152 Anzeige untenen 24 Zeilen
Funktion 7Eh serielle I/O zum pcAnywhere Port (pcAnywhere 2. 00)
Aufruf AH 7Eh
AL I/O Funktion
01h holen Port Eingabestatus
02h holen Port Eingabezeichen
03h Zeichenausgabe
04h Telefon auflegen
CX ASCII Zeichen zur Ausgabe (fn 03h)
Rückgabe (falls AL= 01h)
AX 00h kein Zeichen bereit
01h Zeichen ist verfügbar
(falls AL= 02h)
AL ASCII Code vom empfangenen Zeichen
Funktion 7Fh einstellen Tastatur/Bildschirm Modus (pcAnywhere 2.00)
Aufruf AH 7Fh
AL Parameter
00h aktivieren Remote Tastatur ausschließlich |
01h aktivieren Host Tastatur ausschließlich | Tastaturgruppe
02h aktivieren beide keyboards |
08h Anzeige oberen 24 Zeilen | Bildschirmgruppe
09h Anzeige unteren 24 Zeilen |
10h Hayes Modem |
11h anderes modem | Modemgruppe
12h direkt angeschlossen |
Funktion 0EDh Borland Turbo Lightning API (teilweise)
Aufruf AH 0EDh
BH 0EDh
BL Funktion
00h prüfen ob installiert
02h Zeiger zum Lightning internen Datenaufbau lobyte
03h Zeiger zum Lightning internen Datenaufbau hibyte
04h laden Hilfswörterbuch
06h autoproof Modus
0Fh holen Anzahl Ersetzungen (Segment)
DS:DI Zeiger zur verarbeitenden Zeichenkette
Rückgabe AX Fehlercode (Unbekannt)
Anmerkung Ich habe verschiedene Versuche unternommen, um eine Kopie von dem Turbo Lightning API zu bekommen,
welches 1985 vermutlich für Entwickler verfügbar war.
1988 schrieb Borland das sie daran arbeiten.
Ende 1989 gab Borland über BIX bekannt, das keine weiteren Versionen
des APIs mehr erstellt werden. Die Information hier sind aus
Chris Dunford's LSPELL.PAS Schnittstelle zu Lightning entnommen.
Funktion 0F0h einstellen CPU Geschwindigkeit (Compaq 386)
Aufruf AH 0F0h einstellen Geschwindigkeit
AL Geschwindigkeit
00h gleichwertig zu 6 mHz 80286 (allgemein)
01h gleichwertig zu 8 mHz 80286 (schnell)
02h volle 16 mHz (hohe)
03h umschalten zwischen 8 mHz-gleichwertig und der Geschwindigkeitseinstellung
auf dem Systemboard (auto oder hohe)
04h-07h Unbekannt
08h voll 16 mHz außer 8 mHz-gleichwertig während der Diskettenzugriffe
09h Geschwindigkeit direkt wählen
CX Geschwindigkeitswert, 1 (langsamste) bis 50 (voll), 3 ~= 8088
Rückgabe keine?
Anmerkung 1) benutzt vom Compaq DOS MODE Befehl.
Funktion 0F1h lesen aktuelle CPU Geschwindigkeit (Compaq 386)
Aufruf AH 0F1h
Rückgabe AL Geschwindigkeitscode (siehe Funktion 0F0h)
falls AL= 09h, CX= Geschwindigkeitscode
Funktion 0F2h feststellen des angeschlossenen Tastaturtyps (Compaq 386)
Aufruf AH 0F2h
Rückgabe AL Type
00h falls 11-bit AT Tastatur benutzt wird
01h falls 9-bit PC Tastatur benutzt wird
Funktion 0FFh PC-Tools API
Aufruf AH 0FFh
andere Parameter unbekannt
Anmerkung PC-Tools ist ein Swiss-army-knife Softwarepaket mit einem Editor, DOS
Befehlsinterpreter, Cache, Festplattenoptimierer, und verschiedene andere
Funktionen von Central Point Software.
Funktion 0FFh 2-The-Max VGA-16 Karte
Aufruf AH 0FFh feststellen Zoomen Interrupt
Rückgabe AL Zoomen Interruptnummer
AL+1 alter BIOS Tastatur Handler Interruptnummer
BX Hot Key
┌─────────────────────────────────────────────────────────────────────────────┐
│ Interrupt 17h Drucker 3**10 │
└─────────────────────────────────────────────────────────────────────────────┘
(0:005Ch) Zugriff auf die parallelen Drucker
AH wird geändert. Alle andere Register bleiben erhalten.
Funktion 00h drucken Zeichen/senden AL zum Drucker DX (0, 1, oder 2)
Aufruf AH 00h
AL ASCII Zeichen Code
DX benuzter Drucker
00h PRN oder LPT1
01h LPT2
02h LPT3
Rückgabe AH Zustandsbyte
Bits 0 Zeitüberschreitung
1 ungebraucht
2 ungebraucht
3 I/O Fehler
4 Drucker ausgewählt
5 kein Papier mehr
6 Empfangsbestätigung
7 nicht beschäftigt
Funktion 01h initialisieren Drucker - einstellen init Zeile niedrig, senden 0Ch zum Drucker in DX
Aufruf AH 01h
DX Druckeranschluß welcher initialisiert wird (0, 1, 2)
Rückgabe Zustand wie nachfolgend
Funktion 02h Druckerstatus - lesen Status von Drucker in DX nach AH
Aufruf AH 02h
DX Druckeranschluß (0, 1, 2)
Rückgabe AH Zustandsbyte
Bits 7 0 beschäftigt/Pause: der Drucker kann nicht unmittelbar
mehr Daten annehmen, weil er gerade ein Zeichen empfängt
eine Zeile druckt, Offline ist, oder ein Fehler aufge-
treten ist.
1 bereit
6 Empfangsbestätigung Zeile umgeschaltet: gibt den Status der ACK
Zeile auf dem Druckeranschluß zurück, in dem Moment in dem der Zustand gelesen wurde.
ACK ist ein abtasten: es geht niedrig für ein sehr kurze Zeit (12
Mikrosekunden auf einem Epson) sobald der Drucker bereit ist ein
anderes Zeichen zu empfangen. Soweit dies den Druckerzustand betrifft,
ist dies nutzlos; es ist ausschließlich nützlich für etwas wie eine
Interrupt-gesteuerte Schnittstelle. Die meiste Zeit, es wird ACK hoch
(Bit 6 an) angezeigt, aber gelegentlich, falls man den Zustand kontrolliert
nachdem ein Zeichen gesendet wurde, es wird niedrig angezeigt.
ACK ist niedrig sobald der Drucker ausgeschaltet ist.
5 out-of-paper Zeile umgeschaltet
4 Drucker ausgewählt: Drucker ist ausgewählt/bereit/online. Normalerweise
gibt es einen Schalter am Drucker der dies steuert.
3 I/O Fehler: offline, kein Papier mehr oder andere Fehlerbedingung
wie kein Farbband.
2 ungebraucht
1 ungebraucht
0 Zeitüberschreitung Fehler: Drucker scheiterte daran ein ACK
zu senden und falls beschäftigt nachdem ein Zeichen gesendet wurde.
Anmerkung 1) folgende Zustände können bei einem geeigneten funktionierenden Drucker festgestellt werden:
normal Offline ausgeschaltet
====== ======= =============
nicht beschäftigt/Pause beschäftigt/Pause beschäftigt/Pause
Papier vorhanden Papier vorhanden Papier vorhanden
ausgewählt/online nicht ausgewählt/online nicht ausgewählt/online
kein I/O Fehler I/O Fehler (gewöhnlicher) I/O Fehler
kein Zeitüberschreitungsfehler kein Zeitüberschreitungsfehler kein Zeitüberschreitungsfehler
2) nicht alle Drucker geben geeignete Statuscodes zurück. Das ist OK, nicht alle
nachgemachten BIOS führen eine von zweien aus. Falls das Programm in Abhängigkeit der
richtigen Codes arbeitet, wird eine leichte Programmanpassung benötigt oder es
muß für nichtstandardmäßige Hardware konfiguriert werden.
Funktion 4Fh aktivieren/deaktivieren Druckertreiber (PRN7BIT)
Aufruf AH 04Fh
AL 056H
DH 0
DL Unterfunktion
0 = deaktivieren PRN7BIT
1 = aktivieren PRN7BIT
Rückgabe keine
Funktion 4Fh Druckeranschluß für Druckertreiber wählen (PRN7BIT)
Aufruf AH 04Fh
AL 056H
DH 1
DL Druckeranschluß welcher benutzt werden soll (0, 1, 2)
Rückgabe keine
┌─────────────────────────────────────────────────────────────────────────────┐
│ Interrupt 18h ROM BASIC 3**11 │
└─────────────────────────────────────────────────────────────────────────────┘
(0:0060h) Ausführen ROM BASIC an Adresse 0F600h:0000h
Aufruf keine Parameter benutzt
Rückgabe springt ins ROM BASIC auf IBM Systemen
Anmerkung 1) oft startet dies einen kompatiblen Computer.
2) benutzt von Turbo C 1.5. 2.0 und später soltte nicht benutzt werden.
3) auf IBM Systeme, dieser Interrupt wird aufgerufen falls bei Start Festplattenfehler auftreten.
4) Video Interrupt beim DEC Rainbow.
5) Digital Research's ROM Ausführung von DR-DOS benutzt int 18h als
den anfänglichen Einsprungstellenvektor in den Betriebssystemcode.
Anmerkung daß einige nachgemachte BIOSes keine geeignete Realisierung
des int 18h in dem ROM vornehmen, sodaß die DR-DOS ROMs nicht immer
benutzt werden können.
┌─────────────────────────────────────────────────────────────────────────────┐
│ Interrupt 19h Starten des Systems / Erweiterungsspeicher VDISK ID 3**12 │
└─────────────────────────────────────────────────────────────────────────────┘
(0:0064h)
Aufruf keine Parameter benutzt
Rückgabe keine
Anmerkung 1) liest Spur 0, Sektor 1 in Adresse 0000h:7C00h, übergibt dann die Steuerung
an die Adresse. Wenn kein Diskettenlaufwerk verfügbar ist, schaut an der
absoluten Adresse C:800 ob eine zulässige Festplatte oder anderes ROM vorhanden ist.
Falls nicht, Aufruf des ROM-BASIC via int 18h oder anzeigen Fehlermeldung.
2) veranlässt Neustart von Festplattensystem falls in Betrieb. (Es wird kein
Speichertest ausgeführt).
3) falls die Adresse 0000:0472h nicht den Wert 1234h enthält, ein Speichertest
(POST) wird ausgeführt bevor der Startsektor gelesen wird.
4) VDISK von DOS 3.0+ biegt diesen Vektor um, damit festgestellt werden kann
wenn die CPU vom geschützten Modus in den echtesn Modus umgeschaltet wird.
Ein ausführlich Diskussion von Ray Duncan hierüber kann im PC Magazine,
Mai 30, 1989 nachgelesen werden.
5) wie verlautet, einige Versionen von DOS 2.x und alle Versionen von DOS 3.x+
den int 19h um einige Interrupt Vektoren die von DOS benutzt werden
wieder in den Originalzustand für den Neustart zu versetzen
weil der POST durch den int 19h nicht ausführt wird. Diese Vektoren
so wird berichtet sind: 02h, 08h, 09h, 0Ah, 0Bh, 0Ch, 0Dh, 0Eh, 70h, 72h,
73h, 74h, 75h, 76h, und 77h. Nachdem diese zurückergesetzt wurden, wird auch
der original int 19h Vektor zurückgesetzt und der int 19h aufgerufen.
6) das System überprüft ob ROMs installiert sind, indem der Speicher von 0C000h bis
zum Anfang von des BIOS in 2k Schritte durchsucht wird. ROM Speicher ist identifiziert
falls es mit dem Wort 0AA55h startet. Dem folgt ein 1 Byte großes Feld mit der Länge von
dem ROM (dividiert durch 512). Falls ein ROM gefunden wird, das BIOS ruft das ROM
an einem Offset von 3 vom Anfang auf. Dies Eigenschaft wurde nicht unterstützt in
der ersten PC Maschinen. Die letzte Task übergibt die Steuerung wieder an das
Urladerprogramm (vorausgesetzt die Disketten Steuereinheit ist betriebsbereit).
7) 8255 Port 60h Bit 0= 1 falls von einer Diskette gestartet wird.
┌─────────────────────────────────────────────────────────────────────────────┐
│ Interrupt 1Ah Datum und Zeit 3**13 │
└─────────────────────────────────────────────────────────────────────────────┘
(0:0068h) 1) Greift auf den PC internen Taktgeber zu.
2) dieser Interrupt auf einige Maschinen nicht unterstützt, z.B.
der HP150 PC.
3) einige "Turbo" BIOSes führen den Taktgeber langsamer als normal aus
um Benchmark Software zu täuschen, welche gewöhnlich den int 1Ah
zur Zeitmessung benutzen.
4) zählt das Auftreten der Rate von 1193180/65536 Aufrufe/Sek
(18.2 mal pro Sekunde).
Funktion 00h Zeit-Zähler lesen (außer PC)
Aufruf AH 00h
Rückgabe AL 00h falls der Taktgeber gelesen oder geschrieben (via AH= 0, 1)
wurde in der aktuellen 24-Stunden Zeit.
<> 0 Mitternacht ist vorbei seit dem letzten Lesen
CX:DX 32-bit Takteinheitenzähler (höherwertige 16 Bits in CX)
Anmerkung 1) der zurückgegebene Wert ist die aufgelaufene Anzahl Takteinheiten seit
Mitternacht. Da sind 18.2 Takteinheiten pro Sekunde, oder eine je 54.92ms.
Sobald der Zähler 1,573,040 erreicht, wird er auf Null gesetzt, und das
Überschreitungskennzeichen gesetzt.
2) das Überschreitungskennzeichen wird durch diesen Funktionsaufruf gelöscht,
sodaß ausschließlich einmal pro Tag nicht Null zurückgegeben wird.
3) Int 1Ah/fn 01h kann benutzt werden, um den Zähler auf einen beliebigen
32 Bit Wert einzustellen.
Funktion 01h Zeitzähler setzen (außer PC)
Aufruf AH 01h
CX:DX 32-bit höherwertiges Wort/niederwertiges Wort des Zeitzählers
Rückgabe keine
Anmerkung 1) die Takteinheiten werden durch den Zeitzähler Interrupt 18.2065 mal
pro Sekunde oder alle 54.9254 Millisekunden erhöht. Deshalb:
Aufrufe pro Sekunde 18 (12h)
Aufrufe pro Minute 1092 (444h)
Aufrufe pro Stunde 65543 (10011h)
Aufrufe pro Tag 1573040 (1800B0h)
2) der Zähler wird auf Null gesetzt sobald System neu gestartet wird.
3) speichert einen 32-bit Wert im Takteinheitzähler.
4) das Überschreitungskennzeichen wird durch diesen Aufruf gelöscht.
Funktion 02h lesen der Echtzeituhr (AT und nachfolgende)
Aufruf AH 02h
Rückgabe CH Stunden in BCD
CL Minuten in BCD
DH Sekunden in BCD
DL 00h Standard Uhrzeit
01h Sommerzeit
CF 0 falls Uhr in Ordnung
1 falls die Uhr nicht läuft (Batterie leer, etc.)
Anmerkung liest die aktuell Uhrzeit vom CMOS Uhrzeit/Datum Chip.
Funktion 03h einstellen der Echtzeituhr (AT und nachfolgende)
Aufruf AH 03h
CH Stunden in BCD
CL Minuten in BCD
DH Sekunden in BCD
DL 0 (gelöscht) falls Standard Uhrzeit
1 (gesetzt) falls Sommerzeit
Rückgabe keine
Anmerkung setzt die Uhrzeit im CMOS Uhrzeit/Datum Chip.
Funktion 04h lesen des Datums aus der Echtzeituhr (AT und nachfolgende)
Aufruf AH 04h
Rückgabe CH Jahrhundert in BCD (19 oder 20)
CL Jahr in BCD
DH Monat in BCD
DL Tag in BCD
CF 0 falls Uhr in Ordnung
1 falls die Uhr nicht läuft (Batterie leer, etc.)
Anmerkung liest das aktuelle Datum vom CMOS Uhrzeit/Datum Chip.
Funktion 05h setzen des Datum der Echtzeituhr (AT und nachfolgende)
Aufruf AH 05h
CH Jahrhundert in BCD (19 oder 20)
CL Jahr in BCD
DH Monat in BCD
DL Tag in BCD
Rückgabe keine
Anmerkung setzt das Datum im CMOS Uhrzeit/Datum Chip.
Funktion 06h Alarmzeit einstellen (AT und nachfolgende)
Aufruf AH 06h
CH Stunden in BCD
CL Minuten in BCD
DH Sekunden in BCD
Rückgabe CF gesetzt falls Alarm schon einstellt oder Uhr nicht bereit ist
Anmerkung 1) setzt Alarm im CMOS Datum/Uhrzeit Chip. Int 4Ah wird bei erreichen
der spezifizierten Alarmzeit aufgerufen und zwar alle 24 Stunden
bis die mit Int 1Ah/fn 07h gelöscht wird.
2) ein Nebenefekt dieser Funktion ist, daß die Taktgeber chip's Interrupt
Ebene (IRQ8) aktiviert ist.
3) es kann ausschließlich eine Alarmzeit zur Zeit aktiv sein.
4) das Programm das diese Funktion benutzt, muß die Adresse von seinem Interrupt
Handler für den Alarm in dem Vektor für Int 4Ah setzen.
Funktion 07h löschen Alarmzeit (AT und nachfolgende)
Aufruf AH 07h
Rückgabe keine
Anmerkung 1) annulliert irgendwelche Alarmzeiten auf dem CMOS Datum/Uhrzeit Chip.
2) dies Funktion schalten nicht die Taktgeber chip's Interrupt Ebene (IRQ8) aus.
Funktion 08h einstellen Einschaltzeit (Convertible)
Aufruf AH 08h
CH Stunden in BCD
CL Minuten in BCD
DH Sekunden in BCD
Funktion 09h lesen Alarmzeit und Status (Convertible und PS/2 Modell 30)
Aufruf AH 09h
Rückgabe CH Stunden in BCD
CL Minuten in BCD
DH Sekunden in BCD
DL Alarm Zustand:
00h falls Alarm nicht eingeschaltet ist
01h falls Alarm eingeschaltet ist, aber kein Neustart des Systems ausgeführt wird
02h falls Alarm einen Neustart des Systems bewirkt
Funktion 0Ah lesen Tageszähler (PS/2)
Aufruf AH 0Ah
Rückgabe CF gesetzt wenn Fehler
CX Anzahl Tage seit dem Jan 1, 1980
Anmerkung gibt den Inhalte des Tageszählers vom System zurück.
Funktion 0Bh einstellen Tageszähler (PS/2)
Aufruf AH 0Bh
CX Anzahl Tage seit dem Jan 1, 1980
Rückgabe CF gesetzt wenn Fehler
Anmerkung speichert einen beliebigen Wert im Tageszähler des Systems.
Funktion 80h einstellen Sound Multiplexor (PCjr) (Tandy 1000?)
Aufruf AH 80h
AL Sound Quelle
00h Quelle ist der 8253 Zeit-Zähler Chip, Kanal 2
01h Quelle ist die Kassetteneingabe
02h Quelle ist I/O Kanal "Audio In "Zeile
03h Quelle ist der TI Sound Generator Chip
Rückgabe keine
Anmerkung einstellen der Quelle für die Töne die auf dem
Audio out Bus Zeile oder RF Modulator erscheinen.
Funktion 1Ah lesen Uhrzeit und Datum (AT&T 6300)
Aufruf AH 0FEh
Rückgabe BX Tageszähler (1= Jan 1, 1984)
CH Stunden
CL Minuten
DH Sekunden
DL hunderstel
Anmerkung Tageszähler in BX ist eindeutig zu AT&T/Olivetti Computer.
┌─────────────────────────────────────────────────────────────────────────────┐
│ Interrupt 1Bh Control-Break 3**14 │
└─────────────────────────────────────────────────────────────────────────────┘
(0:006Ch) dieser Interrupt wird aufgerufen sobald der Tastatur Handler auf den IBM
Maschinen erkennt das Ctrl und Break gleichzeitig gedrückt wurden. DOS
belegt diesen Interrupt normalerweise mit seiner eigenenen Ctrl-Break Routine.
Anmerkung 1) falls der Abbruch sich während eines Interrupts ereignete, müssen ein oder mehrere
EOI Befehle zu der 8259 programmierbaren Interrupt Steuereinheit
gesendet werden.
2) alle I/O Geräte sollte sein löschen in Fach eine Arbeitsgang war laufend an
der Uhrzeit.
3) zeigt normalerweise auf eine IRET Instruktion während der Systeminitialisierung,
deshalb es tut nichts, aber einige Programme ändern es, um ein Ctrl-C
Abtastcode zurückzugeben und so ein Aufruf von int 23h erfolgt.
┌─────────────────────────────────────────────────────────────────────────────┐
│ Interrupt 1Ch Zeit-Zähler Takteinheit 3**15 │
└─────────────────────────────────────────────────────────────────────────────┘
(0:0070h)
Anmerkung 1) aufgerufen 18.2065 mal pro Sekunde vom int 08h Interrupt.
2) zeigt normalerweise auf einen IRET falls nicht PRINT.COM installiert ist.
3) falls eine Anwendung bewegt den Interrupt Zeiger, es ist dafür verantwortlich
daß die Anwendung alle Rgister sichert und zrücksichert die
modifizierte werden.
4) gibt zurück Werte an der absoluten Adresse 40:6x (BIOS Datenbereich); Anzahl
Takteinheiten seit Mitternacht
40:6C Wort Zeitzähler höherwertiges Wort
40:6E Wort Zeitzähler niederwertiges Wort
5) Ventura Publisher 2.0 benutzt diesen Interrupt und läßt keine nachträglichen
Vektor Rückzuweisungen zu. Dies ergibt Probleme mit einigen TSRs und
Netzwerk Software.
┌─────────────────────────────────────────────────────────────────────────────┐
│ Interrupt 1Dh Vektor von Video Initialisierung Parameter 3**16 │
└─────────────────────────────────────────────────────────────────────────────┘
(0:0074h) diese Doppelwortadresse zeigt zu 3 Sätze von 16-bytes die die Daten
zum initialisieren der Video Modi für Video Modi 0 & 1 (40 Spalten),
2 & 3 (80 Spalten), und 4, 5 & 6 (Grafik) auf dem Motorola 6845 CRT
Steuereinheit Chip beinhalten.
6845 Register:
R0 horizontal total (horizontale sync in Zeichen)
R1 horizontal angezeigt (Zeichen je Zeile)
R2 horizontale sync Position (bewegen Anzeige nach links oder rechts)
R3 sync Schriftbreite (vertikal und horizontal pulsieren: 4-bits jede)
R4 vertikal total (totale Zeichen Zeilen)
R5 vertikal Anpassung (Anpassung für 50 oder 60 Hz Auffrischung)
R6 vertikal angezeigt (Zeilen von chars angezeigt)
R7 vertikal sync Position (Zeilen versetzten aufwärts oder abwärts)
R8 Interlace (Bits 4 und 5) und Asymmetrie (Bits 6 und 7)
R9 max Rasterzeile addr (Rasterzeilen pro Zeichen Zeile)
R10 Cursor Start (Startzeile des Cursors)
R11 Cursor Ende (Endezeile des Cursors)
R12 Videospeicher Anfangsadresse höherwertiges Byte (6 Bits)
R13 Videospeicher Anfangsadresse niederwertiges Byte (8 Bits)
R14 Cursor Adresse höherwertiges Byte (6 Bits)
R15 Cursor Adresse niederwertiges Byte (8 Bits)
6845 Video Init Tabellen:
Tabelle für Modi 0 und 1 \
Tabelle für Modi 2 und 3 \ jede Tabelle ist 16 Bytes lang und
Tabelle für Modi 4, 5, und 6 / enthält Werte für das 6845 Register
Tabelle für Modus 7 /
4 Wörter Größe vom Video RAM für Modi 0/1, 2/3, 4/5, und 6/7
8 Bytes Anzahl Spalten in jedem Modus
8 Bytes Video Steuereinheit Modusbyte für jeden Modus
Anmerkung 1) da sind 4 getrennte Tabellen, und alle 4 müssen initialisiert falls alle
Video Modi benutzt werden sollen.
2) der Initialisierung Code vom Computer setzt diesen Vektor beim
Systemstart auf die ROM BIOS Video Routinen.
3) IBM empfiehlt daß falls dies Tabelle modifiziert werden muß, diese ins RAM
zu kopieren und dort ausschließlich die benötigten Änderungen durchzuführen.
┌─────────────────────────────────────────────────────────────────────────────┐
│ Interrupt 1Eh Vektor von Diskettencontroller Parameter 3**17 │
└─────────────────────────────────────────────────────────────────────────────┘
(0:0078h) Doppelwortadresse zeigt zur Datenbasistabelle die vom BIOS benutzt wird.
Vorgegeben Stelle ist an 0F000:0EFC7h. Format 11-byte Tabelle:
Bytes:
00h 4-bit Step Rate, 4-bit Kopf Entladezeit
01h 7-bit Kopf Ladezeit, 1-bit DMA Kennzeichen
02h 54. 9254 ms Takteinheiten - Verzögerung für Motor aus (36-38 normal)
03h Sektorgröße:
00h 128 Bytes
01h 256 Bytes
02h 512 Bytes
03h 1024 Bytes
04h letzter Sektor auf Spur (normalerweise 8 oder 9)
05h inter-sector Lücke beim Lesen/Schreiben (normalerweise 42)
06h Datenlänge für DMA Transfer (normalerweise 0FFh)
07h Lückenlänge zwischen Sektoren fürs Formatieren (normal 80)
08h Sektor Füllbyte fürs Formatieren (normal 0F6h)
09h Kopf sich niederlassen Uhrzeit( in Millisekunden)( 15 zu 25 bezeichnend)
DOS 1. 0 0
DOS 1. 10 0
DOS 2. 10 15
DOS 3. 1 1
0Ah Motor Startzeit (in 1/8 Sek Intervalle) (2-4 normal)
DOS 2.10 2
Anmerkung 1) dieser Vektor zeigt zu den ROM BIOS Diskettentabellen bei der System-
initialisierung
2) IBM empfiehlt daß falls dies Tabelle modifiziert werden muß, diese ins RAM
zu kopieren und dort ausschließlich die benötigten Änderungen durchzuführen.
3) einige Versionen von DOS 3.2 enthalten einen Fehler. DOS 3.2 nimmt an daß das
dwort an 0070:0F37 die Adresse von dem Diskettenparameterblock enthält
und ändert die Werte in diesem Block. Diese Stelle enthält eine
Kopie von dem Wert an 0:78 (int 1Eh, DISK_POINTER) falls DOS von einer
Diskette gestartet wurde, aber sobald von der Festplatte gestartet wurde, enthält die Stelle
0:0. Dies verleitet zu falschen Annahmen, besonders sobald laufen unter ein
Debugger weil DOS überschreibt ein Stück von den Interrupt Vektoren für die
Interrupts 1 bis 3. Die Lösung des Problems ist ein Umstieg auf die nächsthöhere
DOS 3.3 Version oder den Festplattenparameter Vektor zu 70:0F37 zu kopieren bevor
das Programm gestartet wird.
┌─────────────────────────────────────────────────────────────────────────────┐
│ Interrupt 1Fh Ptr zu Grafikzeichen Erweiterungen (zweiter Teil) 3**18 │
└─────────────────────────────────────────────────────────────────────────────┘
(0:007Ch) dies ist der Zeiger zu den Daten die von den ROM Video Routinen benutzt werden,
um die Zeichen über ASCII 127 in dem mittleren und hochauflösenden Video
Modus der CGA Karte anzuzeigen.
Anmerkung 1) Doppelwortadresse zeigt zu einer 1K großen Tabelle die sich aus den 28 8-byte Zeichen
Bitmusterdefinition zusammensetzt. Das erste Byte eines jeden Zeichens ist der Anfang der Zeile,
und das letzte Byte ist die untere Zeile.
2) die ersten 128 Zeichen Muster sind im System ROM enthalten.
3) dieser Vektor wird auf 000:0 gesetzt bei der Systeminitialisierung.
4) wird vom DOS externen GRAFTABL Befehl benutzt.